当禁用wifi或数据移动时,为什么getAllNetworks()返回0?

时间:2015-12-30 23:31:29

标签: android null

我以前使用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也会关闭。

1 个答案:

答案 0 :(得分:1)

根据getNetworkInfo(ConnectivityManager.TYPE_WIFI)的API文档,它会返回一个NetworkInfo对象,其中包含NetworkInfo.State枚举,表示没有连接的网络。请参阅ConnectivityManager's getNetworkInfoNetworkInfo

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