我希望在我的项目中实现一个简单的方法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
    }
}

09-26 06:32