为啥 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 为空? (在安卓中)的主要内容,如果未能解决你的问题,请参考以下文章
为啥这个 NSString 在 FireBase 查询块中为空?
为啥可以为空的 rowversion 列在语义上等同于 varbinary(8)?
为啥 recyclerview$adapter 在片段中为空