如何在API 4.1和4.2中以编程方式为Android WebView设置代理?对于较低的版本,下面的链接帮助 -设置适用于ICS和JellyBean的Android WebView代理
1
A
回答
0
此代码的工作 -
/**
* Set Proxy for Android 4.1 and above.
*/
public static boolean setProxyICSPlus(WebView webview, String host, int port, String exclusionList) {
Log.d("", "Setting proxy with >= 4.1 API.");
try {
Class wvcClass = Class.forName("android.webkit.WebViewClassic");
Class wvParams[] = new Class[1];
wvParams[0] = Class.forName("android.webkit.WebView");
Method fromWebView = wvcClass.getDeclaredMethod("fromWebView", wvParams);
Object webViewClassic = fromWebView.invoke(null, webview);
Class wv = Class.forName("android.webkit.WebViewClassic");
Field mWebViewCoreField = wv.getDeclaredField("mWebViewCore");
Object mWebViewCoreFieldIntance = getFieldValueSafely(mWebViewCoreField, webViewClassic);
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);
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);
updateProxyInstance.invoke(sJavaBridge, ppcont.newInstance(host, port, exclusionList));
} catch (Exception ex) {
Log.e("","Setting proxy with >= 4.1 API failed with error: " + ex.getMessage());
return false;
}
Log.d("", "Setting proxy with >= 4.1 API successful!");
return true;
}
0
这是设置为代理服务器的WebView完整的方式。您应该为每个SDK版本相应地设置代理。 避免不张贴SOOOO太多的代码,请看看这个页面GitHub的
希望这可以帮助你。
相关问题
- 1. mailto不适用于android jellybean
- 2. Android模拟器中的HTTP代理适用于浏览器,不适用于WebView
- 3. 适用于Android WebView的AppCache正确设置
- 4. webView与代理设置
- 5. android webview goBack和goForward不适用于WebViewClient
- 6. Android WebView - 适用于浏览器,但不适用于WebView
- 7. DHCP和代理设置Android
- 8. 设置/更改Android中的WebView用户代理
- 9. Android设置webview内容适合宽度
- 10. Rails 3.0 .ics feed,适用于苹果产品,但不适用于microsoft和android
- 11. Camera.Face支持JellyBean或Galaxy Nexus上的ICS
- 12. 设置适用于Android的IMediaPlaybackService
- 13. Android Webview不适用于Android 4.4
- 14. Android ICS Webview textarea打字慢
- 15. UTF-8上的WebView和ICS
- 16. Android代理设置
- 17. Android代理设置
- 18. 如何使JSONParser类适用于Android ICS和更新版本?
- 19. Android WebView适用于较大的图片
- 20. 适用于Android的JWPlayer JavaScript API Webview
- 21. 适用于Android Webview的初始屏幕
- 22. 为segue控制器设置webview代理?
- 23. getRealPathFromURI()不适用于基于ICS和Picasa的图像
- 24. 设置代表(仅适用于协议)仅适用于prepareForSegue?
- 25. HTML5地理位置不适用于Android
- 26. Android的FTP代理设置
- 27. Android中的网络设置类的位置jellybean
- 28. Xamarin Forms WebView代理
- 29. 如何使用适用于Android和iOS的Cordova设置图标
- 30. SharePoint网站不适用于Android webview
什么适用于旧设备? – jonney
@jonney - 对于旧版本,请检查这篇文章 - http://stackoverflow.com/questions/4488338/webview-android-proxy。问题中提到了这一点。 :-) – MediumOne