Как программно изменить пароль сохраненной сети Wi-Fi в Android (уровень API 23, Android 6.0) - PullRequest
0 голосов
/ 09 октября 2018

Предпосылка:

В настоящее время я работаю над приложением Android (уровень API 23, Android 6.0), которое подключается к устройству через Wi-Fi и использует для связи пакеты UDP.Я могу изменить пароль Wi-Fi устройства с помощью определенной команды.Это прекрасно работает.

Цель:

То, что я пытаюсь программно сделать, это:

  1. поиск Wi-Fi, сгенерированный изустройство
  2. подключиться к устройству
  3. отправить команду на изменение пароля
  4. повторно подключиться к устройству с использованием нового пароля

Явозможность подключения в первый раз (шаги 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 для изменения пароля, все работает нормально ... но я хочу изменить сохраненный парольпрограммно.

Любая помощь очень ценится

...