Страницы

Поиск по вопросам

воскресенье, 26 января 2020 г.

Как проверить подключение к интернету?

#android


Хочу, чтобы при нажатии на кнопку выводилось сообщение о том, что нет подключения
к инету. Написал вот такой вот метод:

protected boolean isOnline() {
    String cs = Context.CONNECTIVITY_SERVICE;
    ConnectivityManager cm = (ConnectivityManager) getSystemService(cs);
    if (cm.getActiveNetworkInfo() == null) {
        return false;
    } else {
        return true;
    }
}


Далее в акивити написал следующее:

if ( !isOnline ){
     Toast.makeText(this, "No internet connection", Toast.LENGTH_LONG).show();        
     MyActivity.this.finish();
}


И почему-то все-равно при дебаге этот кусок проходит насквозь. В чем проблема?
Все нужные permissions в манифесте прописал.
    


Ответы

Ответ 1



Работает как часы: public static boolean hasConnection(final Context context) { ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo wifiInfo = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI); if (wifiInfo != null && wifiInfo.isConnected()) { return true; } wifiInfo = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); if (wifiInfo != null && wifiInfo.isConnected()) { return true; } wifiInfo = cm.getActiveNetworkInfo(); if (wifiInfo != null && wifiInfo.isConnected()) { return true; } return false; }

Ответ 2



Я пользуюсь вот таким методом, еще ни разу не подвел public static boolean isOnline(Context context) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo netInfo = cm.getActiveNetworkInfo(); if (netInfo != null && netInfo.isConnectedOrConnecting()) { return true; } return false; }

Ответ 3



Спасибо автору, все работает довольно хорошо, но есть нюанс protected boolean isOnline() { String cs = Context.CONNECTIVITY_SERVICE; ConnectivityManager cm = (ConnectivityManager) getSystemService(cs); if (cm.getActiveNetworkInfo() == null) { return false; } else { retrun true; } Только тут я немного подкорректировал: if ( !isOnline ){ Toast.makeText(this, "No internet connection", Toast.LENGTH_LONG).show(); MyActivity.this.finish(); } И получилось: if ( !isOnline() ){ Toast.makeText(getApplicationContext(), "Нет соединения с интернетом!",Toast.LENGTH_LONG).show(); return; } Если вставить в обработчик onClick то проверка работает хорошо.

Комментариев нет:

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