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

7

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

I will like to check if any forms of internet either 3G or WIFI or GPRS or any other is available or not. If not available, give message to user like "You need internet access" and exit the app. (Currently i am getting force close error in my app if there is no internet access) If availabe, start my app normally. Also, my app is fetches the datas from webservice at different phase, before each phase or operation, i will like to check internet access at first.

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

Смотрите, напримерstackoverflow.com/questions/1560788/… за предыдущие ответы. mlc

Ваш Ответ

3   ответа
7

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;
}
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded captaindroid
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededgetAllNetworkInfo()Error: User Rate Limit ExceededgetNetworkInfo(ConnectivityManager.TYPE_MOBILE)Error: User Rate Limit Exceeded
1
NetworkInfo i = conMgr.getActiveNetworkInfo();
  if (i == null)
    return false;
  if (!i.isConnected())
    return false;
  if (!i.isAvailable())
    return false;
  return true;
3

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 
}

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

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

Похожие вопросы