Android广播监听网络状态

Android广播监听网络状态_第1张图片

1.先说一下广播,广播分为两种:静态广播和动态广播。静态广播即是静态注册的,而动态广播是代码动态注册。静态注册是通过 AndroidManifest 注册,是常驻型 ,当应用程序关闭以后,如果还有广播发出,程序也会被系统调用自动运行动态注册广播不是常驻型广播,广播跟随 activity 的生命周期变化(一般在 onDestory 方法注销广播)

2.权限

3.广播代码如下:

public class NetStateReceiver extends BroadcastReceiver {

 @Override
public void onReceive(Context context, Intent intent) {

ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo networkInfo = cm.getActiveNetworkInfo();

    if (networkInfo != null && networkInfo.isAvailable()) {
        //说明网络是连接的
        int type = networkInfo.getType();
        switch (type) {
            case ConnectivityManager.TYPE_MOBILE:  //移动网络
           
                break;
            case ConnectivityManager.TYPE_WIFI:  //wifi
                
                break;
        }
    } else { 
        showToast("网络不可用");
    }
}
}

4.动态注册
动态注册需要在你需要接受广播的 activity 中注册,然后进行你想要的操作。
在 onCreat 放里面注册:

 private void rigisterReceiver() {
    IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
    mStateReceiver = new NetStateReceiver();
    registerReceiver(mStateReceiver,filter);
}

在 onDestory 方法里面注销:

  protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(mStateReceiver);
}

5.静态注册
静态注册广播 是一个全局的广播,你的 App 退出以后,有网络变化,也会发出广播。
在 AndroidManifest 中注册:

    
        
            
        
    

你可能感兴趣的:(Android广播监听网络状态)