NetworkInfo устарела API 29
Я хотел проверить подключение к сети. Итак, я использовал ConnectivityManager.activateNetworkInfo.isConnected
к сожалению, это не рекомендуется в API 29.
private fun isOnline(): Boolean {
val connectivityManager = appContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val networkInfo = connectivityManager.activeNetworkInfo
return networkInfo != null && networkInfo.isConnected
}
и вы можете увидеть сообщение об амортизации здесь
1 ответ
Решение
Это устаревшая база на Google Document
- getActiveNetworkInfo устарела в API 29.
- getAllNetworkInfo устарела в API 23.
Итак, если вы хотите узнать состояние сетевого подключения, вы можете использовать этот код.
private fun checkNetworkState(context: Context): Boolean {
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val nw = connectivityManager.activeNetwork ?: return false
val actNw = connectivityManager.getNetworkCapabilities(nw) ?: return false
return when {
actNw.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true
actNw.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true
else -> false
}
} else {
val nwInfo = connectivityManager.activeNetworkInfo ?: return false
return nwInfo.isConnected
}
}