Android - получать уведомления при обнаружении новой точки доступа?
Предоставляет ли Android уведомление о нахождении вблизи новой сети Wifi? То, настроено ли устройство для подключения к этой сети Wi-Fi, зависит от того, настроено ли устройство для этой конкретной сети Wi-Fi, но возможно ли получать уведомление при входе в любую новую сеть Wi-Fi?
Я видел класс WifiManager, но состояния внутри класса, кажется, не достигают того, что я пытаюсь сделать. Есть идеи?
1 ответ
Использовать BroadcastReceiver
зарегистрирован для получения намерений с действием: WifiManager.NETWORK_STATE_CHANGED_ACTION
,
В этом BroadcastReceiver вы можете извлечь объект NetworkInfo из намерения:
NetworkInfo ni = (NetworkInfo) intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
Тогда обработайте ni.getState()
проверить подключения / отключения от сетей Wi-Fi.
Это то, что ты искал?
Изменить после ответа
Поэтому, если вы хотите узнать, какие сети Wi-Fi доступны, используйте WifiManager.getScanResults(). Это даст вам список ближайших точек доступа в Scanresult
объекты. Они содержат SSID и BSSID точек доступа, которые являются соответственно их сетевым именем и MAC-адресом.
Вы можете получить эту информацию асинхронно с помощью BroadcastReceiver
зарегистрирован, чтобы получить намерения с действием WifiManager.SCAN_RESULTS_AVAILABLE_ACTION
, Затем вы будете получать уведомления каждый раз, когда система выполняет сканирование Wi-Fi, и вы сможете проверить, появился ли новый SSID (т.е. имя сети) с момента последнего сканирования.
И, наконец, если вы хотите сканировать чаще, чем система по умолчанию, вы можете запустить сканирование Wi-Fi самостоятельно, используя WifiManager.startScan()
,