Settings.Secure.HTTP_PROXY弃用ICS,但在更换任何信息(Settings.

2019-07-29 10:16发布

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之前所有版本正常工作。

Answer 1:

您可以使用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。

还是看这个博客,这是在中国,但你可以阅读它的代码是很容易理解。



Answer 2:

我只是用文件说什么去,但它读给我, Settings.Secure.HTTP_PROXY当前没有过时。 在文档中的(马虎)笔记只是一个开发者的注意,这是后话了Android团队可能会考虑在未来做的事情。



文章来源: Settings.Secure.HTTP_PROXY deprecated in ICS but no information on replacement