美文网首页
Android广播监听网络状态

Android广播监听网络状态

作者: Ruomiz | 来源:发表于2017-01-07 09:57 被阅读344次

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

2.权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

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 中注册:

    <receiver android:name=".broadcast.NetStateReceiver">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver>

相关文章

网友评论

      本文标题:Android广播监听网络状态

      本文链接:https://www.haomeiwen.com/subject/cjkxbttx.html