首页 > 解决方案 > 检查互联网是否可用(targetSdk:Android Q)

问题描述

我希望isInternetAvailable在我的项目中实现一个简单的方法,它根据调用时互联网(任何网络)是否可用返回真或假。

不幸getActiveNetworkInfo的是,自 21 起已弃用,并且getActiveNetwork需要最低 API 级别 23(我的是 21)。

我已经阅读过NetworkCallback,但这似乎是在通知网络变化,我需要一种方法来判断网络现在是否可用。

标签: androidkotlinandroid-10.0

解决方案


像这样使用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
    }
}

推荐阅读