【发布时间】:2021-03-28 19:33:43
【问题描述】:
我正在使用此方法检查网络连接,但有些用户即使已连接到 Internet,也会收到“没有 Internet 连接”错误。用户审查过; 华为 Mate 10 Lite、LGE V20、华硕 Zenfone、三星 Galaxy A8
我的方法:
private fun isConnectionOn(): Boolean {
val connectivityManager =
appContext.getSystemService(Context.CONNECTIVITY_SERVICE) as
ConnectivityManager
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
postAndroidMInternetCheck(connectivityManager)
} else {
preAndroidMInternetCheck(connectivityManager)
}
}
@RequiresApi(Build.VERSION_CODES.M)
private fun postAndroidMInternetCheck(
connectivityManager: ConnectivityManager
): Boolean {
val network = connectivityManager.activeNetwork
val connection =
connectivityManager.getNetworkCapabilities(network)
return connection != null && (
connection.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) ||
connection.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR))
}
private fun preAndroidMInternetCheck(
connectivityManager: ConnectivityManager
): Boolean {
val activeNetwork = connectivityManager.activeNetworkInfo
if (activeNetwork != null) {
return (activeNetwork.type == ConnectivityManager.TYPE_WIFI ||
activeNetwork.type == ConnectivityManager.TYPE_MOBILE)
}
return false
}
【问题讨论】:
标签: android kotlin android-connectivitymanager