Android开发者文档说以下有关Settings.Secure.HTTP_PROXY
:
主机名和端口全球HTTP代理。 用途“:”分隔符为主机和端口之间TODO - 弃用赞成global_http_proxy_host的,等
但没有任何信息global_http_proxy_host
。 现在,我总是null
尝试读取时Settings.Secure.HTTP_PROXY
。
Settings.Secure.HTTP_PROXY
在ICS之前所有版本正常工作。
Android开发者文档说以下有关Settings.Secure.HTTP_PROXY
:
主机名和端口全球HTTP代理。 用途“:”分隔符为主机和端口之间TODO - 弃用赞成global_http_proxy_host的,等
但没有任何信息global_http_proxy_host
。 现在,我总是null
尝试读取时Settings.Secure.HTTP_PROXY
。
Settings.Secure.HTTP_PROXY
在ICS之前所有版本正常工作。
您可以使用Java反射来设置ICS测试的全球代理。
更新后的代码
Activity activity = this;
private void setProxtAndPortOnICS(String porxyServer2, int port2)
{
try
{
Class jwcjb = Class.forName("android.webkit.JWebCoreJavaBridge");
Class params[] = new Class[1];
params[0] = Class.forName("android.net.ProxyProperties");
Method updateProxyInstance = jwcjb.getDeclaredMethod("updateProxy", params);
Class wv = Class.forName("android.webkit.WebView");
Field mWebViewCoreField = wv.getDeclaredField("mWebViewCore");
Object mWebViewCoreFieldIntance = getFieldValueSafely(mWebViewCoreField, oauthPage);
Class wvc = Class.forName("android.webkit.WebViewCore");
Field mBrowserFrameField = wvc.getDeclaredField("mBrowserFrame");
Object mBrowserFrame = getFieldValueSafely(mBrowserFrameField, mWebViewCoreFieldIntance);
Class bf = Class.forName("android.webkit.BrowserFrame");
Field sJavaBridgeField = bf.getDeclaredField("sJavaBridge");
Object sJavaBridge = getFieldValueSafely(sJavaBridgeField, mBrowserFrame);
Class ppclass = Class.forName("android.net.ProxyProperties");
Class pparams[] = new Class[3];
pparams[0] = String.class;
pparams[1] = int.class;
pparams[2] = String.class;
Constructor ppcont = ppclass.getConstructor(pparams);
updateProxyInstance.invoke(sJavaBridge, ppcont.newInstance("my.proxy.com", 1234, null));
}
catch (Exception ex)
{
}
}
private Object getFieldValueSafely(Field field, Object classInstance) throws IllegalArgumentException, IllegalAccessException {
boolean oldAccessibleValue = field.isAccessible();
field.setAccessible(true);
Object result = field.get(classInstance);
field.setAccessible(oldAccessibleValue);
return result;
}
现在,您可以过滤掉使用代理服务器的URL。
还是看这个博客,这是在中国,但你可以阅读它的代码是很容易理解。
我只是用文件说什么去,但它读给我, Settings.Secure.HTTP_PROXY
当前没有过时。 在文档中的(马虎)笔记只是一个开发者的注意,这是后话了Android团队可能会考虑在未来做的事情。