Дополнительно
Определите, есть ли подключение к Интернету на Android
Мне нужно определить, подключено ли устройство Android к Интернету.
Класс NetworkInfo
предоставляет нестатический метод isAvailable ()
, который звучит идеально.
Проблема в том, что:
NetworkInfo ni = new NetworkInfo();
if (!ni.isAvailable()) {
// do something
}
бросает эту ошибку:
& Лт;!- язык: lang-none - >
The constructor NetworkInfo is not visible.
Безопасная ставка - есть еще один класс, который возвращает объект NetworkInfo
. Но я не знаю, какой.
- Как заставить вышеупомянутый фрагмент кода работать?
- Как я мог найти себе информацию, которая мне нужна в онлайн-документации?
- Можете ли вы предложить лучший способ для этого типа обнаружения?
665
6
Метод
getActiveNetworkInfo ()
вConnectivityManager
возвращает экземплярNetworkInfo
, представляющий первый подключенный сетевой интерфейс, который он может найти, илиnull
, если ни один из интерфейсов не подключен. Проверка, возвращает ли этот методnull
, должна быть достаточной, чтобы определить, доступно ли подключение к Интернету или нет.Вам также понадобится:
в вашем андроидном манифесте.
Редактировать:
Обратите внимание, что наличие активного сетевого интерфейса не гарантирует доступности конкретной сетевой службы. Проблемы с сетью, время простоя сервера, низкий уровень сигнала, невыпадающие порталы, фильтры содержимого и т. П. Могут помешать вашему приложению достичь сервера. Например, вы не можете точно определить, может ли ваше приложение связаться с Twitter, пока не получите действительный ответ от службы Twitter.
Я проверяю как Wi-Fi, так и мобильный интернет следующим образом...
Очевидно, что его можно легко изменить, чтобы проверить наличие отдельных типов соединений, например,., если вашему приложению нужны потенциально более высокие скорости Wi-Fi для правильной работы и т. д.
Шаг 1: Создайте класс AppStatus в вашем проекте (вы также можете указать любое другое имя). Затем вставьте приведенные ниже строки в свой код:
Шаг 2: Теперь, чтобы проверить, есть ли у вашего устройства сетевое подключение, просто добавьте этот фрагмент кода, где вы хотите проверить ...
Также еще одно важное замечание. Вы должны установить
android.permission.ACCESS_NETWORK_STATE
в вашем AndroidManifest.xml, чтобы это работало.Вам просто нужно прочитать документацию классов достаточно правильно, и вы найдете все ответы, которые вы ищете. Проверьте документацию на ConnectivityManager. Описание говорит вам, что делать.
Вам также понадобится:
getActiveNetworkInfo () никогда не должен давать ноль. Я не знаю, о чем они думали, когда придумали это. Это должно дать вам объект всегда.
Наверное, я нашел себя: