为啥 activeNetwork 为空? (在安卓中)

Posted

技术标签:

【中文标题】为啥 activeNetwork 为空? (在安卓中)【英文标题】:Why is activeNetwork null? (in android)为什么 activeNetwork 为空? (在安卓中) 【发布时间】:2022-01-07 20:34:21 【问题描述】:

在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 ?: 返回 false

在以下情况下会间歇性发生。 当从后台更改为前台时,ActiveNetwork 为空。 但是,我连接了网络并且我有权限

我的设备 API 是 android 11

你知道为什么 activeNetwork 为空吗?

【问题讨论】:

【参考方案1】:
Do you know why is activeNetwork null?

当它返回null时,表示你的设备根本没有连接到互联网

getActiveNetwork() 返回与当前活动的默认数据网络对应的 Network 对象。

您可以在这里阅读更多内容:https://developer.android.com/reference/android/net/ConnectivityManager

【讨论】:

感谢您的评论。但是,我连接了网络...

以上是关于为啥 activeNetwork 为空? (在安卓中)的主要内容,如果未能解决你的问题,请参考以下文章

phonegap 安卓地理定位。某些属性始终为空

为啥这个 NSString 在 FireBase 查询块中为空?

为啥可以为空的 rowversion 列在语义上等同于 varbinary(8)?

为啥 recyclerview$adapter 在片段中为空

为啥 Bundle 对象在 onCreate() 上总是为空?

为啥 FusedLocationApi.getLastLocation 为空