以编程方式设置 Wifi 代理凭据


应用程序

将使用系统签名进行签名,因此最终可能会授予一些受保护的权限(如android.permission.WRITE_SECURE_SETTINGS(。

那么我的问题是,如何在知道应用程序将使用系统签名进行签名的情况下,为特定WiFi网络上的代理全局设置凭据?

我找不到有关如何执行此操作的任何信息。根据在标准 java 应用程序中可以执行的操作,以下代码可能有效:

        System.setProperty("http.proxyUser", usr);
        System.setProperty("http.proxyPassword", pwd);

但是,这是在Android上设置代理凭据的方法吗?它是否要全局设置代理凭据(即对于使用默认 http 支持的所有应用程序(?(IMO,即使此调用有效,它也不会更改进程边界之外的任何内容(

我还检查了android.provider.Settings的代码.java在那里我发现了一些关于全局代理的属性:global_http_proxy_hostglobal_http_proxy_port但没有关于代理身份验证的任何内容。

Android 使用 System.setSystemProp 在 frameworks/base/core/java/android/net/Proxy 中设置代理.java

我想如果您有系统权限,您可以做同样的事情。

我不确定它是否会影响android.webkit

无法

在 Android 中设置全局代理凭据。整个 AOSP 中根本没有结构可以容纳它。

不幸的是,我没有设法找到任何解释。相关的问题跟踪器项目不是公开的,源代码中的注释很少。开发人员博客中没有关于此问题的内容。Karim Yaghmour的嵌入式Android也没有阐明这个问题。

附言这个答案纯粹基于代码分析。

如果您有签名权限,则可以修改/data/misc/wifi 目录中的 ipconfig.txt 文件(实际上,目录取决于设备型号(。请参考 阅读 WifiConfigStore 中的 IpAndProxyConfigurations 方法。我知道这种方法很粗糙,但它适用于我的公司电话。请注意,某些手机型号可能需要禁用wifi并在更改ipconfig后重新启动wpa_supplicant进程.txt

最新更新