У меня всё время выполняются запросы, и, если отключить интернет и зайти в приложение, то всегда краш, а проверки ставить всюду затратно.
Есть ли универсальное решение?
Ответ
Можно по разному:
Проверять на входе в приложение наличие интернета, т.е. при запуске главного 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;
}
}
И не забываем про все нужные разрешения в манифесте:
Комментариев нет:
Отправить комментарий