为什么 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