Мое приложение сначала загружает данные из Интернета (я использую 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;