如何以编程方式忘记android中的无线网络?
问题内容:
我正在开发一个wifi应用程序,在该应用程序中,将要求用户输入他选择的扫描网络的密码,如果用户输入正确的密码,它将连接并正常运行。但是,当用户输入错误的密码时,将使用该名称添加新的网络,并且将无法对错误密码的cos进行身份验证,并且网络将具有身份验证问题状态。
现在,如果用户尝试再次扫描并选择相同的网络,并输入正确的密码,即使密码现在正确并且将处于禁用状态,它也将无法连接,因为先前的连接仍显示该身份验证问题状态。
如何解决这个问题呢?有什么方法可以使用ConnectivityManager或wifimanager忘记所有网络吗?或其他解决方案?
问题答案:
的WifiManager
源代码,有这样的方法:
/*
* Delete the network in the supplicant config.
*
* This function is used instead of a sequence of removeNetwork()
* and saveConfiguration().
*
* @param config the set of variables that describe the configuration,
* contained in a {@link WifiConfiguration} object.
* @hide
*/
public void forgetNetwork(int netId) {
if (netId < 0) {
return;
}
mAsyncChannel.sendMessage(CMD_FORGET_NETWORK, netId);
}
但是此方法是@hide
,因此我们无法使用它。但根据此评论:
该功能用于序列而不是
removeNetwork()
与saveConfiguration()
您可以尝试使用:removeNetwork()
和saveConfiguration()
。