Как проверить доступность Интернета или нет при запуске приложения в 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;