我希望在我的项目中实现一个简单的方法isInternetAvailable
,该方法根据在调用此刻是否可用互联网(任何网络)返回true或false。
不幸的是,由于21已弃用getActiveNetworkInfo
,因此getActiveNetwork
要求最低API级别为23(我的是21)。
我已经读过有关NetworkCallback
的信息,但这似乎可以通知网络更改,我需要一种方法来判断网络是否现在可用。
最佳答案
像这样使用 NetworkCapabilities
:
fun isNetworkAvailable(): Boolean {
return connectivityManager.run {
getNetworkCapabilities(activeNetwork)?.run {
when {
hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true
hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true
hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> true
else -> false
}
} ?: false
}
}