Android6 wifi取消保存不成功 wifiManager.removeNetwork()
- 在移除wifi WifiPwdForget() ,方法里使用了wifiManager.removeNetwork(),只有通过工具设置保存密码的wifi才可能被移除,否则移除不成功;
查看接口说明,谷歌解释
/*
mWifiManager.removeNetwork方法的解释
Applications are not allowed to remove networks created by other applications.
*/
原因是:设置wifi密码的是时候是两个不同的进程(APP)造成的,系统是Settings APK是android.uid.system,,而现在是通过自己的apk设置了wifi密码连接成功,所以才会出现这种情况;
做一组实验,通过设置apk连接一个wifi,然后通过另外的apk连接第二个wifi,通过以下方法查看log
/** * 获取已配置的wifi信息 * * @return */ public List<WifiConfiguration> getConfiguredNetworks(IObjs obj) { mLogger.info("getConfiguredNetworks==="+mWifiManager.getConfiguredNetworks()); ((WifiListQueryResp) obj).saveWifis = new ArrayList<>(); List<WifiConfiguration> wifiConfigurations=mWifiManager.getConfiguredNetworks(); for (WifiConfiguration oneWifi : wifiConfigurations){ WifiListQueryResp.SaveWifi saveWifi = new WifiListQueryResp.SaveWifi(); saveWifi.SSID=oneWifi.SSID; saveWifi.BSSID=oneWifi.BSSID; saveWifi.networkId=oneWifi.networkId; saveWifi.lastConnected=oneWifi.status; // saveWifi.authType=oneWifi. ((WifiListQueryResp) obj).saveWifis.add(saveWifi); } return mWifiManager.getConfiguredNetworks(); }
解决方案->把app变成系统app,并赋予system权限
https://blog.****.net/weixin_36001685/article/details/101543430
思路二
高版本用wifiManager.forget,
低版本用wifiManager.removeNetwork+wifiManager.saveConfiguration
wifiManager.forget 被隐藏了@hide;
这个方法也不行。