您的位置:首页 > 理论基础 > 计算机网络

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

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

记录处理代码如下:

第一步,实现广播处理逻辑:

[code]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();  
        }    
    };


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

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

    }

private void unRegisterConnect() {

        mActivity.unregisterReceiver(mConnectReceiver);  

    }


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

[code]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;
             }

         }
    };
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: