Я не хочу, чтобы мой пользователь даже пытался что-то скачать, если у него не подключен Wi-Fi. Тем не менее, я могу только сказать, что Wi-Fi включен, но у них все еще может быть соединение 3G.
android.net.wifi.WifiManager m = (WifiManager) getSystemService(WIFI_SERVICE);
android.net.wifi.SupplicantState s = m.getConnectionInfo().getSupplicantState();
NetworkInfo.DetailedState state = WifiInfo.getDetailedStateOf(s);
if (state != NetworkInfo.DetailedState.CONNECTED) {
return false;
}
Тем не менее, состояние не то, что я ожидал. Хотя Wi-Fi подключен, я получаю OBTAINING_IPADDR
как государство.
источник
android.permission.ACCESS_NETWORK_STATE
в ваш AndroidManifest.xml, чтобы это работало.connectivityManager.getNetworkCapabilities(network).hasTransport(NetworkCapabilities.TRANSPORT_WIFI)
Поскольку метод NetworkInfo.isConnected () теперь не поддерживается в API-23 , вот метод, который определяет, включен ли адаптер Wi-Fi, а также подключен к точке доступа, используя вместо этого WifiManager:
источник
NetworkInfo.isConnected()
не выглядит оскорбленным для меня.android.permission.ACCESS_WIFI_STATE
Я просто использую следующее:
Который вернет одно из этих состояний во время вызова getSupplicantState ();
источник
Я использую это в своих приложениях, чтобы проверить, является ли активная сеть Wi-Fi:
источник
active
сеть (та, которая будет использоваться для загрузки) является WiFiNetworkInfo#isConnected
устарелЯ взглянул на несколько таких вопросов и придумал:
Я использую if для проверки моей лицензии в Root Toolbox PRO, и, похоже, он отлично работает.
источник
getNetworkInfo()
будет возвращаться ноль, если сеть не существует. Поэтому, если устройство не имеет мобильной связи, это приведет к ошибке. В большинстве случаев TYPE_ETHERNET будет иметь нулевое значение в этом случае, так как большинство устройств не будет иметь соединение Ethernet.Хотя ответ Джейсона верен, в настоящее время getNetWorkInfo (int) является устаревшим методом. Итак, следующая функция будет хорошей альтернативой:
источник
Используя
WifiManager
вы можете сделать:Метод getNeworkId возвращает -1 только тогда, когда он не подключен к сети;
источник
источник
boolean isConnectedOrConnecting ()
Указывает, существует ли сетевое подключение или находится в процессе создания. Это хорошо для приложений, которые должны делать что-либо, связанное с сетью, кроме чтения или записи данных. Для последнего звонитеisConnected()
вместо этого, что гарантирует, что сеть полностью пригодна для использования.Следующий код (в Kotlin) работает от API 21 до как минимум текущей версии API (API 29). Функция getWifiState () возвращает одно из 3 возможных значений состояния сети WiFi: Disable, EnabledNotConnected и Connected, которые были определены в классе enum. Это позволяет принимать более детальные решения, такие как информирование пользователя о включении Wi-Fi или, если оно уже включено, подключения к одной из доступных сетей. Но если все, что нужно, это логическое значение, указывающее, подключен ли интерфейс WiFi к сети, тогда другая функция - Wi-FiConnected () даст вам это. Он использует предыдущий и сравнивает результат с подключенным.
Он вдохновлен некоторыми из предыдущих ответов, но пытается решить проблемы, возникающие в связи с эволюцией Android API или медленно растущей доступностью IP V6. Хитрость заключалась в использовании:
вместо того:
Согласно документации: https://developer.android.com/reference/kotlin/android/net/wifi/WifiInfo.html#getbssid он вернет ноль, если не подключен к сети. И даже если у нас нет разрешения на получение реального значения, оно все равно будет возвращать что-то отличное от нуля, если мы подключены.
Также имейте в виду следующее:
В Манифесте не забудьте добавить:
Предлагаемый код:
источник
NetworkInfo
Начиная с уровня API 29, этот класс устарел вместе со связанными методами доступа, такими какConnectivityManager#getNetworkInfo()
иConnectivityManager#getActiveNetworkInfo()
.Документация в настоящее время предлагает человек использовать
ConnectivityManager.NetworkCallback
API для асинхронизированного мониторинга обратного вызова или использованияConnectivityManager#getNetworkCapabilities
илиConnectivityManager#getLinkProperties
для синхронизированного доступа к информации сетиЧтобы проверить, подключен ли WiFi, вот код, который я использую:
Котлин:
Ява:
Не забудьте также добавить разрешение
ACCESS_NETWORK_STATE
в свой файл манифеста.источник
Попробуйте этот метод.
Этот метод поможет найти доступ к интернету или нет.
источник
Это работает для меня:
И добавьте это разрешение:
источник
Во многих ответах используется устаревший код или код, доступный в более высоких версиях API. Теперь я использую что-то вроде этого
источник
Вот что я использую в качестве служебного метода в своих приложениях:
источник
В новой версии Android
и добавить представление тоже
источник
connManager.getAllNetworks()
требуется уровень API 21Аналогично ответу @Jason Knight, но по-котлински:
источник
ConnectivityManager.TYPE_WIFI
устарелоЭто более простое решение. См. Вопрос переполнения стека Проверка включения или выключения Wi-Fi на Android .
PS Не забудьте добавить код в файл manifest.xml, чтобы получить разрешение. Как показано ниже.
источник
Пытаться
Возвращает 0 до тех пор, пока устройство не сможет использовать соединение (на моей машине Samsung SM-T280, Android 5.1.1).
источник
Вы можете включить WIFI, если он не активирован, как показано ниже: 1. проверьте состояние WIFI, ответив @Jason Knight 2. если не активировано, активируйте его, не забудьте добавить разрешение WIFI в файл манифеста
Ваш класс Java должен быть таким
}
источник
Добавьте это для JAVA:
в файле манифеста добавить следующие разрешения:
источник
В некотором роде вопрос, но это то, что я использую. требует минимального уровня API 21 и принимает во внимание устаревшие Networkinfo API.
источник