监听网络变化的广播

BroadcastReceiverNetWork mReceiverNetWork = new BroadcastReceiverNetWork();
        IntentFilter mFilter = new IntentFilter();
        mFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
        context.registerReceiver(mReceiverNetWork, mFilter);
 public static class BroadcastReceiverNetWork extends BroadcastReceiver {
        public BroadcastReceiverNetWork() {
        }

        public void onReceive(Context context, Intent intent) {
            getNetWorkType(context);
        }
    }
    public static int getNetWorkType(Context context) {
        ConnectivityManager cm = (ConnectivityManager)context.getSystemService("connectivity");
        NetworkInfo ni = cm.getActiveNetworkInfo();
        byte netType;
        if(ni != null && ni.isConnectedOrConnecting()) {
            switch(ni.getType()) {
                case 0:
                    switch(ni.getSubtype()) {
                        case 1:
                        case 2:
                        case 4:
                        case 7:
                        case 11:
                        case 16:
                            netType = 2;
                            RxToast.info("切换到2G环境下");
                            return netType;
                        case 3:
                        case 5:
                        case 6:
                        case 8:
                        case 9:
                        case 10:
                        case 12:
                        case 14:
                        case 15:
                        case 17:
                            netType = 3;
                            RxToast.info("切换到3G环境下");
                            return netType;
                        case 13:
                        case 18:
                            netType = 4;
                            RxToast.info("切换到4G环境下");
                            return netType;
                        default:
                            String subtypeName = ni.getSubtypeName();
                            if(!subtypeName.equalsIgnoreCase("TD-SCDMA") && !subtypeName.equalsIgnoreCase("WCDMA") && !subtypeName.equalsIgnoreCase("CDMA2000")) {
                                netType = 5;
                            } else {
                                netType = 3;
                            }

                            RxToast.normal("未知网络");
                            return netType;
                    }
                case 1:
                    netType = 1;
                    RxToast.success("切换到wifi环境下");
                    break;
                default:
                    netType = 5;
                    RxToast.normal("未知网络");
            }
        } else {
            netType = -1;
            RxToast.error(context, "当前无网络连接").show();
        }

        return netType;
    }

记得反注册




猜你喜欢

转载自blog.csdn.net/qq_37488573/article/details/80737161