如何以编程方式更改Android中已保存的wifi网络的密码(API级别23,Android 6.0)

问题描述 投票:0回答:1

前提:

我目前正在使用通过Wi-Fi与设备连接并使用UDP数据包进行通信的Android应用(API级别23,Android 6.0)。我可以使用特定命令更改设备的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)

返回假(我不知道为什么失败)

mWifiManager.disableNetwork(netId);

返回true,但似乎没有效果

如果我使用Android设置更改密码,则一切正常,但是我想以编程方式更改保存的密码。

非常感谢您的帮助

android wifi wifimanager
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.