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

先说答案

高版本用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);

ListwifiConfigs = 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(查看的时候显示“已保存”)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值