Intereting Posts
Следует ли вводить презентаторов (mvP) (кинжал2) в представления в андроиде? Spring RestTemplate: одновременно размещать как изображение, так и объект Как получить отдельные элементы из базы данных Firebase? Неизвестная ошибка BaseGameUtils, onConnectionFailed: результат 4 Регистрация HTTP-запросов / ответов с помощью Fiddler на эмуляторе Android Настольный webkit-эквивалент addJavascriptInterface () от Android? Пользовательские атрибуты Android не отображаются Пользовательская версияName значение AndroidManifest.xml в коде Eclipse ADT: Java был запущен, но вернулся код выхода = 13 Как перемещать представление выше Закусочной, как FloatingButton Можно ли использовать ListView без ListActivity в Mono Android? Как отключить отслеживание кликов по событию Framelayout Не удалось скомпилировать проект студии Android Установите ширину пользовательского InfoWindow в Google Maps api v2 Конечная дата больше, чем андроид проверки даты начала

Как проверить доступность Интернета или нет при запуске приложения в Android?

Мое приложение сначала загружает данные из Интернета (я использую webservice). Я хочу проверить доступ в Интернет при запуске приложения.

  1. Я хотел бы проверить, доступны ли какие-либо интернет-формы 3G или WIFI или GPRS или любые другие.
  2. Если недоступно, сообщите пользователю, например, « Вам нужен доступ в Интернет » и выйдите из приложения. (В настоящее время я получаю силовую ошибку в моем приложении, если нет доступа в Интернет)
  3. Если availabe, начните мое приложение в обычном режиме.
  4. Кроме того, мое приложение извлекает данные из webservice на разных этапах, перед каждой фазой или операцией, я хотел бы сначала проверить доступ в Интернет.

Как мне это сделать ?

Вы можете использовать мой метод:

public static boolean isNetworkAvailable(Context context) { ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivity != null) { NetworkInfo[] info = connectivity.getAllNetworkInfo(); if (info != null) { for (int i = 0; i < info.length; i++) { Log.i("Class", info[i].getState().toString()); if (info[i].getState() == NetworkInfo.State.CONNECTED) { return true; } } } } return false; } 

Вы можете сделать все это с помощью ConnectivityManager . Вся необходимая информация доступна здесь.

http://developer.android.com/reference/android/net/ConnectivityManager.html

Вероятно, вы захотите вставить что-то подобное в onStart() вашего начального действия (в зависимости от того, где в вашем коде подключено соединение и загружаются данные)

 ConnectivityManager cm = (ConnectivityManager) Context.getSystemService(Context.CONNECTIVITY_SERVICE); if (cm.getAllNetworkInfo().isConnected()) { //proceed with loading } else { //showErrorDialog } 

Я не тестировал код, поэтому резка и вставка – это, вероятно, плохая идея, но это должно дать вам хорошую отправную точку. Существует много другой информации, если вы проверяете документы.

Также может возникнуть идея справиться с отсутствием возможности подключения, изменив код, чтобы он не просто сработал, если нет соединения, но показывается экран загрузки по умолчанию? Также ваше приложение может не получить данные, даже если есть доступное соединение, поэтому вы также захотите обработать этот сценарий.

 NetworkInfo i = conMgr.getActiveNetworkInfo(); if (i == null) return false; if (!i.isConnected()) return false; if (!i.isAvailable()) return false; return true;