android——利用广播监听网络状态

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

  1. 权限
<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 {

            CustomToast.showToast("网络不可用");
        }
    }
    }

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

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

在ondestory方法里面注销:

 @Override
    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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值