无法删除由同一应用以编程方式创建的Wi-Fi配置文件

时间:2018-11-20 06:47:48

标签: android wifi wifimanager

我有一个使用Xamarin表单开发的android应用程序,我将使用Wifi Manager显示应用程序内部的可用wifi网络。用户选择任何网络并提供密码,然后我将添加该网络并启用该网络以连接它。这是代码

var configuredNetworksList = wifiManager.ConfiguredNetworks.ToArray();
 if (configuredNetworksList != null)
    {
      var existingWifiConfig = configuredNetworksList.Where(r => r.Ssid == wifiConfig.Ssid).ToArray();
      foreach (WifiConfiguration temp in existingWifiConfig)
            {
                bool isSuccess = wifiManager.RemoveNetwork(temp.NetworkId);
                wifiManager.SaveConfiguration();
            }
        }

        int id = wifiManager.AddNetwork(wifiConfig);

        wifiManager.SaveConfiguration();

        wifiManager.EnableNetwork(id, true)

上面的代码工作正常。但是问题是,

  • 我正在安装该应用程序,然后选择要连接的网络。例如“ wifiX”。它已连接。
  • 现在转到android设备中的“设置”->“ Wifi”。这里仅显示一个SSID为“ wifiX”(由我添加)的wifi。
  • 然后,我要卸载该应用程序,然后重新安装相同的应用程序,并执行相同的步骤以连接“ wifiX”。它正在连接到所选的wifi。但是现在我的Android设备设置在wifi列表中显示了两个具有相同SSID“ wifiX”的实例。

enter image description here

注意:如您在代码中所见,在添加选定的网络之前,我将删除所有具有相同选定ssid的网络。

根据android文档Android 6.0 Changes documentation,我们无法删除由其他应用创建的wifi配置文件。

但是在我的情况下,wifi是由同一应用创建的。

有人可以帮忙吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

注意:

var existingWifiConfig = configuredNetworksList.Where(r => r.Ssid == wifiConfig.Ssid).ToArray(); 
//should be SSID, not Ssid.

doc是here