这是一个创建于 2825 天前的主题,其中的信息可能已经有所发展或是发生改变。
private static boolean setProxyICS(Context context, String host, int port) {
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 mWebViewCoreFieldInstance = getFieldValueSafely(mWebViewCoreField, context);
Class wvc = Class.forName("android.webkit.WebViewCore");
Field mBrowserFrameField = wvc.getDeclaredField("mBrowserFrame");
Object mBrowserFrame = getFieldValueSafely(mBrowserFrameField, mWebViewCoreFieldInstance);
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(host, port, null));
return true;
} catch (Exception ex) {
return false;
}
}
3 条回复 • 2017-04-18 10:07:31 +08:00
|
|
1
gouchaoer 2017-04-17 15:24:05 +08:00
我艹我也遇到这个问题,不过我是 ios 的 uiwebview 没法设置代理
|
|
|
2
gouchaoer 2017-04-17 15:24:36 +08:00
你搞这个不会是为了搞用户 cookie 吧
|
|
|
3
qw30716 2017-04-18 10:07:31 +08:00
@ gouchaoer 我是通过设置代理拦截网络请求,但是 webview 代理感觉内存泄露了,没有生效
|