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