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

时间:2018-04-12 10:52:34

标签: java android proxy

应用程序将使用系统签名进行签名,因此最终可能会授予一些受保护的权限(如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,但没有关于代理身份验证的内容。

3 个答案:

答案 0 :(得分:6)

Android使用System.setSystemPropframeworks/base/core/java/android/net/Proxy.java

中设置代理

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

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

答案 1 :(得分:3)

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

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

P.S。这个答案纯粹基于代码分析。

答案 2 :(得分:0)

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