android删除所有已保存wifi密码,安卓移除/忘记已保存的wifi密码

在Android 4.4.4版本中,`WifiManager`的`forget`方法不可用,导致无法删除WiFi配置。通过查看高版本源码,发现`forget`方法实际是`removeNetwork`和`saveConfiguration`的组合。因此,通过遍历WiFi配置列表,匹配目标SSID并调用这两个方法来实现删除。这种方法解决了旧版本系统删除WiFi密码的问题。建议在连接WiFi前先执行忘记操作,避免因系统记住错误密码而无法连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先说答案

高版本用wifiManager.forget,低版本用wifiManager.removeNetwork+wifiManager.saveConfiguration

网络跟集体失忆了似的。

好不容易搜出来用wifiManager.forget可以忘记wifi密码,结果由于我使用的是安卓4.4.4,并没有forget这个方法。然后就去百度(不要问我为什么不用谷歌,最近翻难难于上青天),结果一点点有用的信息都毛有。还好我还没笨死,点进去WifiManager源码看了下(我下载的sdk是高版本的,app使用的是低版本),确实是有forget方法的。在forget方法的注释里我发现了一句话——

* This function is used instead of a sequence of removeNetwork()

* and saveConfiguration().

搞定了,撒花,欧耶

附安卓4.4.4下如何移除一个wifi密码

NetUtil中

/**

* 忘记某一个wifi密码

*

*@param wifiManager

*@param targetSsid

*/

public static void removeWifiBySsid(WifiManager wifiManager, String targetSsid) {

Log.d(TAG, "try to removeWifiBySsid, targetSsid=" + targetSsid);

List wifiConfigs = wifiManager.getConfiguredNetworks();

for (WifiConfiguration wifiConfig : wifiConfigs) {

String ssid = wifiConfig.SSID;

Log.d(TAG, "removeWifiBySsid ssid=" + ssid);

if (ssid.equals(targetSsid)) {

Log.d(TAG, "removeWifiBySsid success, SSID = " + wifiConfig.SSID + " netId = " + String.valueOf(wifiConfig.networkId));

wifiManager.removeNetwork(wifiConfig.networkId);

wifiManager.saveConfiguration();

}

}

}

上层调用的地方这样写

WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);

String ssid= "想要移除的wifi名称,区分大小写";

//wifi名需要被双引号裹起来,因为wifiConfig.SSID的值是带双引号的,如果这里不想带引号,下面判断是否相等的那里就需要带上引号

NetUtil.removeWifiBySsid(wifiManager, """ + ssid + """);

再P个S

建议在connectWifi之前都先忘记一次,否则会出现一个难以察觉的bug,就是系统记录了原来输错的一个密码,那么无论你connectWifi多少次,wifi名和密码有多正确,都无法连上wifi(查看的时候显示“已保存”)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值