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
    }
}
Другие вопросы по тегам