Я хочу проверить состояние сетевого подключения и застрял при использовании метода getActiveNetworkInfo, который запрещен - PullRequest
0 голосов
/ 10 июня 2019

Я в основном хотел узнать, как проверить состояние подключения к Интернету в Android после исключения методов NetworkInfo на уровне API 29.

Я пытался вызвать getActiveNetworkInfo метод, но он ограничен, любая быстрая помощь очень ценится.

Я застрял в этой точке ..

fun verifyIfNetworkAvailable(activity: AppCompatActivity):Boolean{

        var connectivityManager = activity.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
            var networkInfo = connectivityManager.isDefaultNetworkActive

            return networkInfo != null && networkInfo.isConnected

        }

кстати, я использую Kotlin.

Ответы [ 3 ]

1 голос
/ 10 июня 2019

Вы можете проверить подключение к интернету, как это.если вы не хотите проверять подключение устройства.

шаг 1, добавьте свой асинхронный класс

public class YourInternetCheckerClass extends AsyncTask<Void, Void, Boolean>
{
    @Override
    protected Boolean doInBackground(Void... voids)
    {
        try
        {
            InetAddress ipAddr = InetAddress.getByName("www.google.com");
            return !ipAddr.equals("");

        }
        catch (Exception e)
        {
            Log.e("GCInternetChecker", e.toString());
            return false;
        }
    }
}

шаг 2, вызовите эту асинхронную задачу, это функция.

  private boolean checkInternetConnection()
    {
        try
        {
            return new GCInternetChecker().execute().get();
        }
        catch (Exception e)
        {
            return false;
        }
    }

шаг 3 проверьте интернет, прежде чем позвонить в службу

if (this.checkInternetConnection())
{
    //call service
}
else
{
 //handle no internet. Toast or dialog box.
}
0 голосов
/ 10 июня 2019

NetworkInfo класс устарел на уровне API 29. Поэтому методы, которые возвращают экземпляр для NetworkInfo, также устарели. Чтобы двигаться дальше с более новым API, вы можете следовать документу, который гласит: -

Вместо этого вызывающим абонентам следует использовать API ConnectivityManager.NetworkCallback, чтобы узнать об изменениях связности, или переключиться на использование ConnectivityManager # getNetworkCapabilities или ConnectivityManager # getLinkProperties для синхронного получения информации.

Пожалуйста, проверьте официальный документ для Информация о сети и Connectivity Manager для использования.

0 голосов
/ 10 июня 2019

иди с этим, PS не мое,

fun isWiFiConnected(context: Context): Boolean {
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
return if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
    val network = connectivityManager.activeNetwork
    val capabilities = connectivityManager.getNetworkCapabilities(network)
    capabilities != null && (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI))
} else {
    connectivityManager.activeNetworkInfo.type == ConnectivityManager.TYPE_WIFI
}

}

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