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

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

2015-12-04 14:33 721 查看
 
android
监听网络连接状态的改变

BroadcastReceiver
[java] view
plaincopy

1.  public class MyReceiver extends BroadcastReceiver {  
2. 
    @Override  
3.      public void onReceive(Context context, Intent intent) {  
4. 
        // TODO Auto-generated method stub  
5.          //Toast.makeText(context, intent.getAction(), 1).show();  
6. 
        ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);  
7.          NetworkInfo mobileInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);  
8. 
        NetworkInfo wifiInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);  
9.          
10.        if(!mobileInfo.isConnected() && !wifiInfo.isConnected()) {
11.         //网络不可以用
12.         }else {
13.         //网络可用
14.
         }  
15.
    }  
16.   
17.
}  

在清单文件中注册 BroadcastReceiver
[java] view
plaincopy

1.      <receiver android:name=".MyReceiver">  
2. 
            <intent-filter>  
3.                  <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>  
4. 
            </intent-filter>  
5.          </receiver>  

要读取网络状态记得要加权限
[java] view
plaincopy

1.  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  

 

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

从 GPRS 到 WIFI,程序至少会收到3个Broadcast

第一个是连接到WIFI

第二个是断开GPRS

第三个是连接到WIFI

 

从WIFI到GPRS,程序至少会收到2个Broadcast

第一个是断开Wifi

第二个是连接到GPRS

 

 

/**
    * 注册网络状态监听器(广播接收者)
    */
   private 
void
registerReceiver(){
       IntentFilter filter=new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
        netStateReceiver=new NetStateReceiver();
        this.registerReceiver(netStateReceiver, filter);
   }
  
   /**
    * 注销网络状态监听器
    */
   private 
void
unregisterReceiver(){
      if(netStateReceiver!=null){
         this.unregisterReceiver(netStateReceiver);
      }
       
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 手机