需要在Android6.0中以编程方式忘记配置的Wifi网络

时间:2018-02-21 07:41:25

标签: android kotlin wifi wifimanager

我已经实现了系统以编程方式从我的应用程序连接到wifi网络,现在我想以编程方式忘记配置的wifi网络 应用程序。 我已经将它实现到我的应用程序中,它在Android 5.0和更低版本的设备上运行良好(少于API 22)。 对于Android 6.0及更高版本的设备,它不起作用(高于和等于API 23)。

请参阅以下代码:

    val wifiManager = this@SelectWifiSettingsActivity.baseContext!!.getSystemService(android.content.Context.WIFI_SERVICE) as WifiManager
    val list = wifiManager.configuredNetworks
    for (i in list) {
        wifiManager.disableNetwork(i.networkId)
        wifiManager.saveConfiguration()
    }    

我还提到了以下链接:   https://stackoverflow.com/a/33075445/9360112

由于Android 6.0中的WiFi配置有一些变化。

如果有人为此提供解决方案,请帮助我。

1 个答案:

答案 0 :(得分:2)

第一件事是您不需要使用saveConfiguration()

  

此方法已在API级别26中弃用。

     

无需调用此方法-addNetwork(WifiConfiguration),updateNetwork(WifiConfiguration)和removeNetwork(int)已经自动保留配置。

第二,您要寻找的是removeNetwork()

您的代码如下:

val wifiManager = this@SelectWifiSettingsActivity.baseContext!!.getSystemService(android.content.Context.WIFI_SERVICE) as WifiManager
    val list = wifiManager.configuredNetworks
    for (i in list) {
        wifiManager.removeNetwork(i.networkId)
    }  

可以说... WifiManager的Android M API有所更改。

  

您的应用现在只能更改WifiConfiguration对象的状态   如果创建了这些对象。您无权修改或   删除用户或其他应用创建的WifiConfiguration对象。

请参见Network Changes in Android M