Предпосылка:
В настоящее время я работаю над приложением Android (уровень API 23, Android 6.0), которое подключается к устройству через Wi-Fi и использует для связи пакеты UDP.Я могу изменить пароль Wi-Fi устройства с помощью определенной команды.Это прекрасно работает.
Цель:
То, что я пытаюсь программно сделать, это:
- поиск Wi-Fi, сгенерированный изустройство
- подключиться к устройству
- отправить команду на изменение пароля
- повторно подключиться к устройству с использованием нового пароля
Явозможность подключения в первый раз (шаги 1, 2, 3), используя такой код:
private void connect(String ssid, String password) {
WifiConfiguration conf = new WifiConfiguration();
conf.SSID = String.format("\"%s\"", ssid);
conf.preSharedKey = String.format("\"%s\"", password);
netId = mWifiManager.addNetwork(conf);
mWifiManager.saveConfiguration();
mWifiManager.disconnect();
mWifiManager.enableNetwork(netId, true);
mWifiManager.reconnect();
}
Дополнительная информация:
В файле манифеста я объявил этиразрешения:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Проблема:
Если я пытаюсь использовать тот же метод для подключения после смены пароля, я не могу достичьсоединение, потому что (я думаю) Android запоминает предыдущий пароль.
Если я пытаюсь использовать updateNetwork(conf)
вместо addNetwork(conf)
, я не вижу никакой разницы.
У меня естьпопытался удалить или отключить каким-либо образом сохраненную сеть, прежде чем пытаться подключиться снова, но безуспешно.
mWifiManager.removeNetwork(netId)
возвращает false (я понятия не имею, почемуне удается)
mWifiManager.disableNetwork(netId);
возвращает значение true, но, похоже, оно не оказывает влияния
Если я использую настройки Android для изменения пароля, все работает нормально ... но я хочу изменить сохраненный парольпрограммно.
Любая помощь очень ценится