Your browser does not support the audio element.

Android——断网监测

package com.shoneworn.mydemo;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;

public class BaseNetActivity extends Activity {

    protected BroadcastReceiver mNetworkChangeReceiver;
    protected boolean mIsNetworkChangeReceiverRegistered = false;
    AlertDialog dialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        initDialog();
        
        //注册广播用于监听网络状态改变
        mNetworkChangeReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                detectNetWork();  
            }
        };

    }

    private void initDialog() {
        dialog = new AlertDialog.Builder(this).setTitle("网络异常")
                .setPositiveButton("确定", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface arg0, int arg1) {

                    }
                }).setMessage("网络发生异常,请检查后重试!").create();
    }

    @Override
    protected void onResume() {
        super.onResume();
        registerReceiver(mNetworkChangeReceiver, new IntentFilter(
                ConnectivityManager.CONNECTIVITY_ACTION));
    }

    @Override
    protected void onPause() {
        super.onPause();
        try {
            unregisterReceiver(mNetworkChangeReceiver);
        } catch (Exception e) {
        }
    }

    
    protected void detectNetWork() {
        if (!isConnected(this)) {
            dialog.show();
        } else {
            dialog.dismiss();
        }
    }

    //判断网络是否连接
    public boolean isConnected(Context context) {
        ConnectivityManager cm = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo info = cm.getActiveNetworkInfo();
        return (info != null && info.isConnected());
    }

}

本人很懒,懒得去自定义 一个漂亮的Dialog.

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

权限一定不要忘记了!

posted @ 2015-08-04 10:41  shoneworn  阅读(1175)  评论(0)    收藏  举报