Java代码  使用ConnectivityManager监听网络状态变化_使用ConnectivityManage

  1. mIntenFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);  

  2.    mConnectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);  

  3.    mReceiver = new BroadcastReceiver() {  

  4.           

  5.     @Override  

  6.     public void onReceive(Context context, Intent intent) {  

  7.   

  8.         if (intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false)) {  

  9.             Log.i(TAG, "netWork has lost");  

  10.         }  

  11.       

  12.         NetworkInfo tmpInfo = (NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO);  

  13.         Log.i(TAG, tmpInfo.toString() + " {isConnected = " + tmpInfo.isConnected() + "}");  

  14.     }  

  15. };  



注册Receiver,监听网络变化: 

Java代码  使用ConnectivityManager监听网络状态变化_使用ConnectivityManage

  1. registerReceiver(mReceiver, mIntenFilter);  



取消注册,不再监听网络变化: 

Java代码  使用ConnectivityManager监听网络状态变化_使用ConnectivityManage

  1. unregisterReceiver(mReceiver);  




也可在AndroidManifest.xml中注册BroadcastReceiver 

Xml代码  使用ConnectivityManager监听网络状态变化_使用ConnectivityManage

  1. <receiver android:name=".ConnectionReceiver" >  

  2.     <intent-filter>  

  3.         <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />  

  4.     </intent-filter>  

  5. </receiver>     



程序第一次启动时会收到一个Broadcast

从 GPRS 到 WIFI,程序至少会收到3个Broadcast 
第一个是连接到WIFI 
第二个是断开GPRS 
第三个是连接到WIFI 

从WIFI到GPRS,程序至少会收到2个Broadcast 
第一个是断开Wifi 
第二个是连接到GPRS