http://mikewang.blog.51cto.com/3826268/850572

Android 的wifi状态可以分为两大类,两者均可通过广播监听,相应的Action在WifiManager类中:

第一类:有无wifi源及各个状态间转变

可监听 WIFI_STATE_CHANGED_ACTION。(如下图所示,双击图片可放大)

有五种情况:

1-1 disabled

1-2 disabling

1-3 enable

1-4 enabling

1-5 unknown

可通过不同的Extra值,见下图(双击可放大)获得状态常量:

代码如下:

        
  1. if(WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)){//在此监听wifi有无
  2. intwifiState=intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,0);
  3. switch(wifiState){
  4. caseWifiManager.WIFI_STATE_DISABLED:
  5. updateWifiStatus(R.drawable.wifi_disable);
  6. Toast.makeText(mContext,R.string.wifi_disable,
  7. Toast.LENGTH_LONG).show();
  8. break;
  9. caseWifiManager.WIFI_STATE_DISABLING:
  10. break;
  11. caseWifiManager.WIFI_STATE_ENABLED:
  12. updateWifiStatus(R.drawable.wifi_enable);
  13. Toast.makeText(mContext,R.string.wifi_enable,
  14. Toast.LENGTH_LONG).show();
  15. break;
  16. caseWifiManager.WIFI_STATE_ENABLING:
  17. break;
  18. caseWifiManager.WIFI_STATE_UNKNOWN:
  19. break;
  20. }
  21. }

也可通过以下代码实现:

        
  1. //另外一种方式
  2. mWifiMng=(WifiManager)mContext
  3. .getSystemService(mContext.WIFI_SERVICE);
  4. switch(mWifiMng.getWifiState()){
  5. caseWifiManager.WIFI_STATE_DISABLED:
  6. updateWifiStatus(R.drawable.wifi_disable);
  7. Toast.makeText(mContext,R.string.wifi_disable,
  8. Toast.LENGTH_LONG).show();
  9. break;
  10. caseWifiManager.WIFI_STATE_DISABLING:
  11. break;
  12. caseWifiManager.WIFI_STATE_ENABLED:
  13. updateWifiStatus(R.drawable.wifi_enable);
  14. Toast.makeText(mContext,R.string.wifi_enable,
  15. Toast.LENGTH_LONG).show();
  16. break;
  17. caseWifiManager.WIFI_STATE_ENABLING:
  18. break;
  19. caseWifiManager.WIFI_STATE_UNKNOWN:
  20. break;
  21. }

第二类:wifi是否连接正常

可监听:NETWORK_STATE_CHANGED_ACTION(如下图所示,双击图片可放大)

有两种状况:

2-1连接

2-1未连接

在OnReceiver方法中,通过不同Extra值,获得连接状况,如下图,双击图片放大:

代码如下:

        
  1. if(WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)){
  2. ParcelableparcelableExtra=intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
  3. if(null!=parcelableExtra){
  4. NetworkInfonetworkInfo=(NetworkInfo)parcelableExtra;
  5. booleanisConnected=networkInfo.isAvailable();
  6. updateNetworkStatus();
  7. }
  8. }

更多相关文章

  1. android获取监听SD Card状态的方法
  2. 如何在xml中直接添加view点击监听(参考rayleung博客)
  3. Android(安卓)studio连接数据库后出现的问题——insert插入问题
  4. 分享:android图片浏览器—类微信朋友圈相片浏览【android代码下载
  5. Android(安卓)Activty使用示例【慢慢更新】
  6. android 用editview 禁用输入法,涉及到的几个事件
  7. Android简单实现Socket通信,客户端连接服务器后,服务器向客户端发
  8. Android(安卓)RatingBar:评价条控件
  9. Android的HTTP协议

随机推荐

  1. Android:防止过快点击造成多次事件
  2. Android解决UnsupportedOperationExcepti
  3. Android[初级教程]第十一章 TabHost控件
  4. github前100名的android开源库
  5. 《Android》Lesson11-UI布局
  6. Android(安卓)原生GPS定位 判断室内室外
  7. Android回音噪音处理Demo
  8. 关于Android(安卓)6.0及以上版本用Pendin
  9. activity的启动过程分析
  10. Android(安卓)开发中遇到的 Exception &