Я хочу разработать приложение, которое может препятствовать подключению к сети WiFi, если я не одобрю его. Я хочу иметь возможность запросить MAC-адрес точки доступа и сравнить его со списком известных адресов, соответствующих SSID. Цель приложения - защитить пользователей от случайного подключения к вредоносным точкам доступа, таким как типы, которые могут быть созданы с помощью ананасных устройств.
Я не понимаю из своего исследования, как я достиг бы этой цели. Вопросы, такие как Как получить уведомление о изменении статуса сети Wi-Fi? объясняют, как обнаружить соединение, но для моего случая использования, который уже слишком поздно.
Ни ConnectivityManager
, ни WifiManager
, похоже, не предлагают способы добавления слушателей, которые могут прервать соединение.
Некоторые мысли, которые я имел для решения:
-
Установите себя как прокси-сервер и принимайте решение о том, разрешать ли данные. Однако это не похоже на опцию Устанавливаются ли настройки прокси-сервера Android для всех приложений на устройстве? (подсказка: ответ "Нет" ).
-
Замените существующий менеджер WiFi чем-то вроде моего собственного создания. Тем не менее, я действительно пытался найти любую информацию в руководствах разработчика Android относительно замены компонентов системы. Следовательно, я не уверен, что это возможно на ненарушенных телефонах.
-
Сохраните сетевые пароли в моем приложении и установите пароли в диспетчере WiFi на бессмысленные значения. Затем закрепите широковещательное сообщение, которое предупреждает о неудавшемся соединении (предположительно, что-то вроде. Мне кажется, что устройства ананаса, вероятно, будут принимать любой пароль, тем самым делая этот подход недействительным.WifiManager.WPS_AUTH_FAILURE
) и выборочно решает снова подключиться к этой сети. Возможно, это возможное (если не уродливое) решение, но могу ли я установить пароль обратно на бессмысленное значение, пока сеть все еще подключена, чтобы мы не могли спокойно подключиться к другому SSID с тем же именем? Я не уверен -
Найдите способ запретить Android автоматически подключаться к известным сетям (т.е. сети, которые использовались до этого или иметь с ними пароль). Тогда я смогу управлять всеми подключениями/отключением от своего приложения. Однако я не могу понять, как это сделать вручную на моем телефоне, поэтому я сомневаюсь, что это возможно программно.
Может ли кто-нибудь предложить подход, который будет работать на некорневом телефоне?