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(),

Другие вопросы по тегам