【问题标题】:Unable to remove Wi-Fi profile which is created by the same app programmatically无法删除由同一应用程序以编程方式创建的 Wi-Fi 配置文件
【发布时间】:2019-04-22 13:55:21
【问题描述】:

我有一个使用 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”。它已连接。
  • 现在进入安卓设备中的设置->Wifi。这里只有一个 SSID 为“wifiX”(我添加的)的 wifi 显示。
  • 然后我卸载应用程序并重新安装相同的应用程序并执行相同的步骤以连接“wifiX”。它正在连接到选定的 wifi。但现在我的 android 设备设置在 wifi 列表中显示两个具有相同 SSID“wifiX”的实例。

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

根据 android 文档 Android 6.0 Changes documentation ,我们无法删除由另一个应用程序创建的 wifi 配置文件。

但就我而言,wifi 是由同一个应用程序创建的。

有人可以帮忙吗?

提前致谢。

【问题讨论】:

    标签: android wifi wifimanager


    【解决方案1】:

    注意:

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

    文档是here

    【讨论】:

    • 嗨@navylover。感谢您的回复。正如我提到的应用程序是在 Xamarin 表单中实现的。所以它使用C#语言。它的属性名称为 Ssid 而不是 SSID。
    • @ChandranS 对不起,我的疏忽。
    • @ChandranS 调试并查看 'isSuccess' 是否返回 true
    • 是的。对于重新安装应用程序后创建的实例,它是真实的。但是在卸载之前添加的网络为false(我的意思是由先前安装的应用程序创建的网络)。
    猜你喜欢
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 2019-05-26
    • 2017-09-05
    相关资源
    最近更新 更多