我的应用程序有一个WebView,我想将其配置为使用代理。显然,Android没有可以用来实现这一目标的API,但我在StackOverflow上找到了一些文章,展示了如何通过反射来做到这一点:
- 网络视图安卓代理 Android
- WebView 在 Android-L 上以编程方式设置代理
不幸的是,第一篇文章中的方法仅适用于KitKat 4.4,而Android L/5.0的方法需要设置应用程序范围的代理设置(通过System.setProperty("http.proxyHost", ...)
和System.setProperty("http.proxyPort", ...)
这不仅仅影响WebView。例如,Apache HTTP客户端似乎也选择了这些设置。
有没有办法只为 WebView 设置代理设置,而不会影响应用的其他组件?
在 API>21 棒棒糖中,它不允许在 Web 视图中设置代理设置。这些方法已被删除。
因此,现在唯一的方法是设置您提到的系统范围的代理,然后清除onPause
代理并onStop
活动方法。清除可以通过以下方式完成:
System.clearProperty("http.proxyHost");
System.clearProperty("http.proxyPort");
希望对您有所帮助。