13

Android開発者のドキュメントには、次のことが記載されていますSettings.Secure.HTTP_PROXY

グローバルhttpプロキシのホスト名とポート。ホストとポートのTODO間で':'区切り文字を使用します-global_http_proxy_hostなどを優先して廃止します

しかし、についての情報はありませんglobal_http_proxy_host。今、私はいつもnull読み込もうとしていますSettings.Secure.HTTP_PROXY

Settings.Secure.HTTP_PROXYICS以前のすべてのリリースで正しく機能していました。

4

2 に答える 2

5

Java Reflectionを使用して、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を除外できます。

または、このブログを見てください。これは中国語ですが、かなり理解しやすいコードを読むことができます。

于 2012-05-24T06:33:11.870 に答える
1

私はドキュメンテーションが言っていることをただ通り過ぎています、しかしそれSettings.Secure.HTTP_PROXYは現在非推奨ではないことを私に読みます。ドキュメント内の(ずさんな)メモは、これがAndroidチームが将来行うことを検討する可能性があることであるという開発者のメモにすぎませんでした。

于 2012-05-19T21:01:27.053 に答える