Android6 wifi取消保存不成功 wifiManager.removeNetwork()

  1. 在移除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 getConfiguredNetworks(IObjs obj) {

        mLogger.info("getConfiguredNetworks==="+mWifiManager.getConfiguredNetworks());



        ((WifiListQueryResp) obj).saveWifis = new ArrayList<>();

        List 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();

    }

Android6 wifi取消保存不成功 wifiManager.removeNetwork()_第1张图片

解决方案->把app变成系统app,并赋予system权限

https://blog.csdn.net/weixin_36001685/article/details/101543430

 

 

 

思路二
高版本用wifiManager.forget,

低版本用wifiManager.removeNetwork+wifiManager.saveConfiguration

wifiManager.forget 被隐藏了@hide;

Android6 wifi取消保存不成功 wifiManager.removeNetwork()_第2张图片

这个方法也不行。

你可能感兴趣的:(Android)