使用compileSdkVersion 23,但是试图支持早在9。
getNetworkInfo(int)
在23中被弃用。建议改用getAllNetworks()
和getNetworkInfo(Network)
。但是,这两种方法都需要最低版本的API 21。
有没有我们可以在支持包中使用的类来帮助我们做到这一点?
我知道有人提出了一个解决方案,但是我的最低before要求是9,这带来了一个问题。
发布于 2019-04-15 03:06:51
最好检查一下您的网络是否已连接到Internet:
@Suppress("DEPRECATION")
fun isNetworkAvailable(context: Context): Boolean {
try {
val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
return if (Build.VERSION.SDK_INT > 22) {
val an = cm.activeNetwork ?: return false
val capabilities = cm.getNetworkCapabilities(an) ?: return false
capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
} else {
val a = cm.activeNetworkInfo ?: return false
a.isConnected && (a.type == ConnectivityManager.TYPE_WIFI || a.type == ConnectivityManager.TYPE_MOBILE)
}
} catch (e: Exception) {
e.printStackTrace()
}
return false
}
发布于 2018-08-30 18:12:48
Kotlin版本:
fun isInternetOn(context: Context): Boolean {
val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as? ConnectivityManager
val activeNetwork = cm?.activeNetworkInfo
return activeNetwork != null && activeNetwork.isConnected
}
发布于 2019-07-01 01:36:25
检查互联网是否可用:
@RequiresPermission(allOf = [
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.INTERNET
])
fun isInternetAvailable(context: Context): Boolean {
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager?
val activeNetworkInfo = connectivityManager!!.activeNetworkInfo
return activeNetworkInfo != null && activeNetworkInfo.isConnected
}
https://stackoverflow.com/questions/32547006
复制相似问题