应用程序将使用系统签名进行签名,因此最终可能会授予一些受保护的权限(如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_host
和global_http_proxy_port
,但没有关于代理身份验证的内容。
答案 0 :(得分:6)
Android使用System.setSystemProp
在frameworks/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进程