NetWorkInfo, ConnectivityManager.ActiveNetworkInfo и .IsConnected устарели - PullRequest
0 голосов
/ 10 марта 2020

У меня есть приложение, нацеленное на Android 8.0 (API-уровень 26 - Oreo) - Android 10.0 (API-уровень 29 - Q), и следующий код устарел:

            ConnectivityManager connectivityManager = (ConnectivityManager)GetSystemService(ConnectivityService);
            NetworkInfo activeConnection = connectivityManager.ActiveNetworkInfo;
            bool isOnline = (activeConnection != null) && activeConnection.IsConnected;

Если NetworkInfo и все, что с ним связано, является устаревшим, что я использую на его месте. Я исследовал эту проблему весь день, и КАЖДЫЙ совет, который я видел, использует функциональность, которая устарела (и написана в java, что является для меня полной загадкой). Поэтому, пожалуйста, не говорите мне, что это дубликат какой-то проблемы, уже опубликованной где-то, это не так. Также, если вы предоставите код, пожалуйста, c#.

Ответы [ 2 ]

0 голосов
/ 10 марта 2020

Если это может помочь вам или кто-то может преобразовать этот код в C#.
Этот код функционален в Kotlin и не амортизируется .

private fun isInternetConnection(): Boolean {
    val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
    val capability = connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork)
    return capability?.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) ?: false
}

Надеемся, что вам помогли

0 голосов
/ 10 марта 2020

Хотя код в Kotlin, я надеюсь, вы поймете, что альтернатива.

fun isConnectedToTheInternet(): Boolean {
        val cm = application.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            cm.run {
                cm.getNetworkCapabilities(cm.activeNetwork)?.run {
                    return when {
                        hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true
                        hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true
                        hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> true
                        else -> false
                    }
                }
            }
        } else {
            cm.run {
                cm.activeNetworkInfo?.run {
                    if (type == ConnectivityManager.TYPE_WIFI) {
                        return true
                    } else if (type == ConnectivityManager.TYPE_MOBILE) {
                        return true
                    }
                }
            }
        }

        return false
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...