我以前使用过 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 - 为什么 getAllNetworks() 在禁用 wifi 或数据移动时返回 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34538886/