Сниппет проверки интеренет-соединения (Android)

Добавлено: 08/10/2018 09:42 |  Обновлено: 21/10/2018 09:07 |  Добавил: nick |  Просмотры: 2704 Комментарии: 1
Вводная часть
Очень просто проверить интернет-соединение можно с помощью метода InetAddress.getByName("адрес_сайта"), но в основном потоке он работать не будет, для него нужно создать отдельный поток.
Сниппет этого метода в отдельном потоке, со всплывающим сообщением (Snackbar) в основном потоке, показан в этом материале.
private void checkInternetConnection() {
    Handler mHandler = new Handler();
    AsyncTask.execute(new Runnable() {
        @Override
        public void run() {
            try {
                InetAddress address = InetAddress.getByName("www.google.com");
                //Соединены с интернетом
            } catch (UnknownHostException e) {
                e.printStackTrace();
                mHandler.post(new Runnable() {
                    @Override
                    public void run () {
                        final Snackbar snackBar = Snackbar.make(view,
                                R.string.check_internet_connection, Snackbar.LENGTH_INDEFINITE);
                        snackBar.setAction(R.string.okay, new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                snackBar.dismiss();
                            }
                        });
                        snackBar.show();
                    }
                });
            }
        }
    });
}
И в качестве бонуса еще один пример проверки Интеренет-соединения.
public static boolean isInternetConnected() {
    ConnectivityManager cm =
            (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    return netInfo != null && netInfo.isConnected();
}

Оставьте свой комментарий

Комментарии