在Android中compileSdkVersion为29时,NetworkInfo被标记为deprecated。现在根据Network来判断
/**
* @Author: kanghanbin
* @Description: NetworkUtil判断网络状态是否可用
* @CreateDate: 2020/4/27 14:16
*/
val Context.isNetWorkAvailable: Boolean
get() {
val connectivityManager =
getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val result: Boolean
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val network = connectivityManager.activeNetwork
val networkCapabilities: NetworkCapabilities? =
connectivityManager.getNetworkCapabilities(network)
result = if (networkCapabilities != null) {
if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
Log.i("khb", "wifi")
} else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
Log.i("khb", "手机流量")
}
true
} else {
Log.i("khb", "没有网络")
false
}
} else {
val networkInfo = connectivityManager.activeNetworkInfo
result = if (networkInfo != null && networkInfo.isAvailable) {
Log.i("khb", networkInfo.typeName)
true
} else {
Log.i("khb", "没有网络")
false
}
}
return result
}