Страницы

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

понедельник, 3 июня 2019 г.

Как запретить использовать приложение без интернета?

У меня всё время выполняются запросы, и, если отключить интернет и зайти в приложение, то всегда краш, а проверки ставить всюду затратно.
Есть ли универсальное решение?


Ответ

Можно по разному:
Проверять на входе в приложение наличие интернета, т.е. при запуске главного Activity. И не стартовать к-л задачи до успешной проверки. Сделать активити-проверщик интернета. Запускать на нынешнюю главную а эту. Если интернет есть, то запускать нынешнюю главную. Иначе - выходить из приложения. Обернуть все нынешние запросы в сеть в класс, проверяющий перед запуском задачи наличие инета. Если он есть - продолжаем, иначе - закрываем приложение.
Проверить же наличие соединения с сетью (не факт, что там есть сам интернет) можно, согласно en-SO, так
public boolean isOnline() { ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo netInfo = cm.getActiveNetworkInfo(); return netInfo != null && netInfo.isConnectedOrConnecting(); }
Также надо добавить спец. разрешение в AndroidManifest.xml

Ещё момент: если надо проверять именно факт подключённости с интернету (а не подключено-или-подключается) то использовать надо netInfo.isConnected() вместо netInfo.isConnectedOrConnecting()

Проверить же есть ли интернет как таковой можно вот так
public boolean isInternetAvailable() { try { InetAddress ipAddr = InetAddress.getByName("google.com"); //можно заменить на к-л другой сайт
if (ipAddr.equals("")) { return false; } else { return true; }
} catch (Exception e) { return false; }
}

И не забываем про все нужные разрешения в манифесте:

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

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