我以前使用getNetworkInfo(ConnectivityManager.TYPE_WIFI),即使WiFi关闭,也永远不会返回null,但是在api 23上已弃用,所以现在有了这个:

NetworkInfo isWifiOn = null;
Network[] networks = cm.getAllNetworks();
Log.i("sms", "size:"+networks.length);
for (Network network : networks) {
isWifiOn = cm.getNetworkInfo(network);
if (isWifiOn != null && isWifiOn.getType() == ConnectivityManager.TYPE_WIFI)
   {
      break;
   }
}


这里:

if(isWifiOn!=null){

}
else{
   //always enter here because networks.length is 0
}


当我使用getNetworkInfo(ConnectivityManager.TYPE_WIFI)时,即使WiFi关闭,它也始终可以工作。

最佳答案

根据getNetworkInfo(ConnectivityManager.TYPE_WIFI)的API文档,它将返回带有NetworkInfo.State枚举的NetworkInfo对象,该枚举表示未连接任何网络。请参见ConnectivityManager's getNetworkInfoNetworkInfo

因为没有连接网络,所以网络长度为0是正确的。

关于android - 为什么禁用wifi或数据移动时getAllNetworks()返回0?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34538886/

10-09 10:08