1.注册一个广播接收器,监听网络状态

privatevoidStart(){IntentFilterfilter=newIntentFilter();filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);this.registerReceiver(myBroadcastReceiver,filter);}

2.取消注册广播器

privatevoidStop(){this.unregisterReceiver(myBroadcastReceiver);}

3.新建监听类NetworkConnectChangedReceiver继承BroadcastReceiver

publicclassNetworkConnectChangedReceiverextendsBroadcastReceiver{@OverridepublicvoidonReceive(Contextcontext,Intentintent){//这个监听wifi的打开与关闭,与wifi的连接无关if(WifiManager.WIFI_STATE_CHANGED_ACTION.equals(intent.getAction())){intwifiState=intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,0);switch(wifiState){caseWifiManager.WIFI_STATE_ENABLED:Log.e("APActivity","WIFI_STATE_ENABLED");break;caseWifiManager.WIFI_STATE_ENABLING:Log.e("APActivity","WIFI_STATE_ENABLING");break;caseWifiManager.WIFI_STATE_DISABLED:Log.e("APActivity","WIFI_STATE_DISABLED");break;caseWifiManager.WIFI_STATE_DISABLING:Log.e("APActivity","WIFI_STATE_DISABLING");break;}}//这个监听wifi的连接状态即是否连上了一个有效无线路由,当上边广播的状态是WifiManager.WIFI_STATE_DISABLING,和WIFI_STATE_DISABLED的时候,根本不会接到这个广播。//在上边广播接到广播是WifiManager.WIFI_STATE_ENABLED状态的同时也会接到这个广播,当然刚打开wifi肯定还没有连接到有效的无线if(WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(intent.getAction())){ParcelableparcelableExtra=intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);if(null!=parcelableExtra){NetworkInfonetworkInfo=(NetworkInfo)parcelableExtra;switch(networkInfo.getState()){caseCONNECTED:Log.e("APActivity","CONNECTED");break;caseCONNECTING:Log.e("APActivity","CONNECTING");break;caseDISCONNECTED:Log.e("APActivity","DISCONNECTED");break;caseDISCONNECTING:Log.e("APActivity","DISCONNECTING");break;caseSUSPENDED:Log.e("APActivity","SUSPENDED");break;caseUNKNOWN:Log.e("APActivity","UNKNOWN");break;default:break;}}}//这个监听网络连接的设置,包括wifi和移动数据的打开和关闭。//最好用的还是这个监听。wifi如果打开,关闭,以及连接上可用的连接都会接到监听。见log//这个广播的最大弊端是比上边两个广播的反应要慢,如果只是要监听wifi,我觉得还是用上边两个配合比较合适if(ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())){NetworkInfoinfo=intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);if(info!=null){StringBuildersb=newStringBuilder();sb.append("info.getTypeName():"+info.getTypeName()+"\n");sb.append("getSubtypeName():"+info.getSubtypeName()+"\n");sb.append("getState():"+info.getState()+"\n");sb.append("getDetailedState():"+info.getDetailedState().name()+"\n");sb.append("getDetailedState():"+info.getExtraInfo()+"\n");sb.append("getType():"+info.getType());Log.e("APActivity",sb.toString());}}}}


更多相关文章

  1. Android(安卓)GPS状态改变与监听
  2. Android(安卓)软键盘小知识点
  3. android日期控件显示
  4. android 录音 播放
  5. Android监听键盘上的确定键等
  6. Android如何监听输入框的出现和隐藏
  7. android 可编辑的下拉框 Demo
  8. android日期控件显示
  9. protected-broadcast 规范使用(ERROR: Sending non-protected br

随机推荐

  1. Android中用html代码来实现界面 WebView
  2. 乐博Android客户端发布
  3. Android中RTL布局的适配
  4. 特殊情况下的APP设计⑤:最全的临时框设计
  5. Android(安卓)运行时权限管理最佳实践
  6. Android(安卓)混淆器 - ProGuard
  7. 【工作感悟】Android(安卓)开发者,如何提
  8. android解析xml文件的方式之SAX方式
  9. 如何跳过Nexus 7二代的开机设置
  10. Android开发--身高体重指数(BIM)计算--访问