Android 中判断WiFi是否可用的可靠方法

在一些程序中,需要从网上下载数据,或者通过其他方式对网络产生流量,当wifi不可用时应该提示用户wifi已经不可用了,是否继续,因为如果wifi掉了,那么程序可能采用3G卡或其他的收费的渠道使用网络,会导在不知情时产生大量的上网费用。通过查看Android的api可使用下列方法进行判断:

public static boolean isWiFiActive(Context inContext) {             Context context = inContext.getApplicationContext();             WifiManager wifiManager = (WifiManager) context                     .getSystemService(Context.WIFI_SERVICE);             return wifiManager.isWifiEnabled();         }  

在模拟器上使用这个方法时,可以正确判断wifi是否可用,但是在真机上就判断不出来。wifi是断开的,但是返回的结果true,造成wifi判断不准确。经过尝试可使用如下的方法判断方能正确:

public static boolean isWiFiActive(Context inContext) {             Context context = inContext.getApplicationContext();             ConnectivityManager connectivity = (ConnectivityManager) context                     .getSystemService(Context.CONNECTIVITY_SERVICE);             if (connectivity != null) {                 NetworkInfo[] info = connectivity.getAllNetworkInfo();                 if (info != null) {                     for (int i = 0; i < info.length; i++) {                         if (info[i].getTypeName().equals("WIFI") && info[i].isConnected()) {                             return true;                         }                     }                 }             }             return false;         }    

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwgxyz.html