gpt4 book ai didi

android - Settings.Secure.HTTP_PROXY 在 ICS 中已弃用,但没有关于替换的信息

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:27:11 24 4
gpt4 key购买 nike

Android 开发者文档对 Settings.Secure.HTTP_PROXY 的描述如下:

Host name and port for global http proxy. Uses ':' seperator for between host and port TODO - deprecate in favor of global_http_proxy_host, etc

但是没有关于global_http_proxy_host的任何信息。现在我在尝试读取 Settings.Secure.HTTP_PROXY 时总是得到 null

Settings.Secure.HTTP_PROXY 在 ICS 之前的所有版本中都能正常工作。

最佳答案

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

或查看 this博客这是中文的,但是你可以阅读它的代码,它很容易理解。

关于android - Settings.Secure.HTTP_PROXY 在 ICS 中已弃用,但没有关于替换的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10611381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com