前提:
我目前正在使用通过Wi-Fi与设备连接并使用UDP数据包进行通信的Android应用(API级别23,Android 6.0)。我可以使用特定命令更改设备的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)
返回假(我不知道为什么失败)
mWifiManager.disableNetwork(netId);
返回true,但似乎没有效果
如果我使用Android设置更改密码,则一切正常,但是我想以编程方式更改保存的密码。
非常感谢您的帮助