为什么 activeNetwork 为空? (在 android 中)
Why is activeNetwork null? (in android)
在Activity onStart 方法中检查网络状态。
这是我的来源。
override fun onStart() {
super.onStart()
if (!NetworkManager.checkNetworkState(this))
showDialog("")
}
object NetworkManager {
fun checkNetworkState(context: Context): Boolean {
val connectivityManager =
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val nw = connectivityManager.activeNetwork ?: return false
val actNw = connectivityManager.getNetworkCapabilities(nw) ?: return false
return when {
actNw.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true
actNw.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true
else -> false
}
}
}
问题的定位就在这里。
val nw = connectivityManager.activeNetwork ?: return false
在以下情况间歇性出现。
从后台更改为前台时,ActiveNetwork 为空。
但是,我连接了网络并且我有权限
我的设备 API 是 Android 11
你知道为什么activeNetwork为空吗?
Do you know why is activeNetwork null?
当它returns为空时,表示您的设备根本没有连接到互联网
getActiveNetwork()
Returns 与当前活动的默认数据网络相对应的网络对象。
您可以在这里阅读更多内容:https://developer.android.com/reference/android/net/ConnectivityManager
在Activity onStart 方法中检查网络状态。
这是我的来源。
override fun onStart() {
super.onStart()
if (!NetworkManager.checkNetworkState(this))
showDialog("")
}
object NetworkManager {
fun checkNetworkState(context: Context): Boolean {
val connectivityManager =
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val nw = connectivityManager.activeNetwork ?: return false
val actNw = connectivityManager.getNetworkCapabilities(nw) ?: return false
return when {
actNw.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true
actNw.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true
else -> false
}
}
}
问题的定位就在这里。 val nw = connectivityManager.activeNetwork ?: return false
在以下情况间歇性出现。 从后台更改为前台时,ActiveNetwork 为空。 但是,我连接了网络并且我有权限
我的设备 API 是 Android 11
你知道为什么activeNetwork为空吗?
Do you know why is activeNetwork null?
当它returns为空时,表示您的设备根本没有连接到互联网
getActiveNetwork() Returns 与当前活动的默认数据网络相对应的网络对象。
您可以在这里阅读更多内容:https://developer.android.com/reference/android/net/ConnectivityManager