android 监听网络连接状态的变化

在Android开发中,为了应对网络连接状态的变化,通常需要监听android.net.conn.CONNECTIVITY_CHANGE广播。本文介绍了如何实现这一功能,包括广播处理逻辑的编写、动态注册广播以及相应消息的处理步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在android开发中,时常要对网络连接状态变化的事件作出适当的处理。处理方式可通过监听android.net.conn.CONNECTIVITY_CHANGE广播实现。

记录处理代码如下:
第一步,实现广播处理逻辑:

private BroadcastReceiver mConnectReceiver = new BroadcastReceiver() {
        @Override  
        public void onReceive(Context context, Intent intent) {  
            // TODO Auto-generated method stub  
            //Toast.makeText(context, intent.getAction(), 1).show();  
            ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);  
            NetworkInfo mobileInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);  
            NetworkInfo wifiInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);  
            NetworkInfo activeInfo = manager.getActiveNetworkInfo(); 

            if(wifiInfo.isConnected()){
                handler2.sendEmptyMessage(MSG_TYPE_WIFI_CONNECTED);
            }
            else{
                handler2.sendEmptyMessage(MSG_TYPE_WIFI_DISCONNECTED);
            }

            String active;
            if(activeInfo != null)//如果无网络连接activeInfo为null  
               active = activeInfo.getTypeName();
            else
               active ="null";
            Toast.makeText(context, "mobile:"+mobileInfo.isConnected()+"\n"+"wifi:"+wifiInfo.isConnected()  
                            +"\n"+"active:"+active, 1).show();  
        }    
    };

第二步,注册广播(这里采取动态注册)

private void registerConnect() {
        IntentFilter mWifiFilter = new IntentFilter();
        mWifiFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
        mActivity.registerReceiver(mConnectReceiver, mWifiFilter);

    }

private void unRegisterConnect() {

        mActivity.unregisterReceiver(mConnectReceiver);  

    }

第三步,添加消息处理逻辑:

public Handler handler2 = new Handler(){
         @Override
         public void handleMessage(Message msg){
             Log.i("TEST", "WramFragment::handleMessage:"+msg.toString());
             super.handleMessage(msg);
             //只要执行到这里就关闭对话框
             switch(msg.what){
             case MSG_TYPE_WIFI_CONNECTED:
                 WifiInfo info=  mWifiAdmin.getConnectionInfo();
                 String ssid = (info==null)?"null":info.getSSID();
                //todo               
                break;
             case MSG_TYPE_WIFI_DISCONNECTED:
                 //todo
                 break;
             default:
                    break;
             }

         }
    };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值