【问题标题】:How to add WifiConfiguration with HttpProxy set on Android 8 & 9如何在 Android 8 和 9 上使用设置的 HttpProxy 添加 WifiConfiguration
【发布时间】:2019-07-31 13:18:39
【问题描述】:

我需要将带有代理设置的 WifiConfiguration 添加到 WifiManager。 当我不使用 sethttpProxy(我根本不添加代理)时,我可以成功添加配置,但是当我使用方法 wifiConfiguration.sethttpProxy() 然后 addNetwork(wifiConfiguration) 时,没有添加网络配置。

我已经在具有不同配置的物理设备上进行了尝试,现在我正在模拟器上进行测试。模拟器有一个默认的 Wi-Fi 网络 AndroidWifi,我正在尝试为其添加配置。在我尝试之前,我使用系统菜单删除了所有“已保存的网络”,以确保我的应用可以创建和编辑此配置。

WifiConfiguration configuration = new WifiConfiguration();
configuration.SSID = "\"" + ssid + "\"";
configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
configuration.setHttpProxy(ProxyInfo.buildDirectProxy(proxyData.proxy_host,
                             proxyData.proxy_port, proxyData.proxy_exception));
wifiManager.addNetwork(configuration);

addNetwork 返回 -1,我收到类似的错误

E/WifiConfigManager:UID 10086 无权修改代理设置“AndroidWifi”NONE。必须具有 NETWORK_SETTINGS,或者是设备或配置文件所有者。 E/WifiConfigManager: 添加/更新网络 AndroidWifi 失败

【问题讨论】:

    标签: java android proxy wifimanager wifi


    【解决方案1】:

    正如您收到的错误中所说,您需要拥有 NETWORK_SETTINGS 权限或成为设备/配置文件所有者。这是自 Android 8 以来的一些规则集,请参阅here

    尝试在设备的“设置”中手动为 LG Q7 上的 wifi 网络设置代理设置时,我遇到了同样的问题。出于某种原因,默认设置应用程序没有处理这个问题。无论如何,我已经在adb-join-wifi app 的帮助下绕过了它,我相信它会向您展示如何以编程方式执行此操作。

    这里的关键是您将使用setHttpProxy 的应用程序设置为设备所有者(可以是临时的),您可以使用adb shell 中的dpm 工具来执行此操作,如项目的Github 页面上所述。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-27
      • 1970-01-01
      • 2019-08-27
      • 2013-02-10
      • 1970-01-01
      • 2015-11-27
      • 2013-11-22
      • 1970-01-01
      相关资源
      最近更新 更多