if ( нету интернета ) { ...}

Ответить
Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

if ( нету интернета ) { ...}

Сообщение doter.ua » 13 май 2014, 19:54

Можно ли как-нибудь "спросить" у системы о статусе подключения к интернету? Апликуха тащит инфу из и-нета, а если он не включен - крашится. Думаю мб просто отказать юзеру, если и-нет недоступен.

Код находится в классе виджета extends AppWidgetProvider (активити нету)
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: if ( нету интернета ) { ...}

Сообщение Mikhail_dev » 13 май 2014, 20:03

Есть удобная библиотека для работы с интернетом (Volley), пишет её сам гугл.
http://arnab.ch/blog/2013/08/asynchrono ... ng-volley/
вот пример как работать с ней, в нем есть класс, в котором есть обработка ошибок отсутствующего интернета. Я думаю так правильней будет обрабатывать ошибки отсутствующего интернета.

Статус включенного интернета конечно можно узнать, но там не всё так очевидно. К примеру мы можем быть подключены к WiFi, а сам роутер не подключен к интернету.

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: if ( нету интернета ) { ...}

Сообщение doter.ua » 13 май 2014, 20:17

Нашел на "стеке"

Код: Выделить всё

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;
}
А вот насчет роутера без доступа нужно будет потестить.
Update: протестил: нужно было проверить "штуку" вытягиваемую из интернета на null.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Ответить