我以前使用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 getNetworkInfo和NetworkInfo。
因为没有连接网络,所以网络长度为0是正确的。
关于android - 为什么禁用wifi或数据移动时getAllNetworks()返回0?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34538886/