【发布时间】:2021-03-17 15:00:24
【问题描述】:
我需要检查设备是否有互联网连接,我搜索了一些示例,但是当我复制并粘贴代码时,我总是遇到错误或不推荐使用的功能。我也不明白我必须把检查连接的方法放在哪里,因为我需要在 viewModel 中检查互联网连接以发出一些请求,而且我发现的所有方法在参数中都有上下文,我不能在 viewModel 中获取上下文。
我尝试了这段代码,但我不明白我必须把它放在哪里,然后我得到了
'TYPE_WIFI, TYPE_MOBILE, TYPE_ETHERNET: Int' is deprecated. Deprecated in Java
private fun isInternetAvailable(context: Context): Boolean {
var result = false
val connectivityManager =
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val networkCapabilities = connectivityManager.activeNetwork ?: return false
val actNw =
connectivityManager.getNetworkCapabilities(networkCapabilities) ?: return false
result = when {
actNw.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true
actNw.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true
actNw.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> true
else -> false
}
} else {
connectivityManager.run {
connectivityManager.activeNetworkInfo?.run {
result = when (type) {
ConnectivityManager.TYPE_WIFI -> true
ConnectivityManager.TYPE_MOBILE -> true
ConnectivityManager.TYPE_ETHERNET -> true
else -> false
}
}
}
}
return result
}
谁能解释我如何进行这项检查?
【问题讨论】: