我在我的应用程序中有一个WebView,其中打开了一些站点(总是相同的,它是我自己的页面)。该站点有一些JS代码,可以从远程主机加载一些图像。
我想截获对这样的图像的请求(通过URL模式),并返回我自己的内容(即另一个图像),或者根据内部应用程序逻辑保持请求不变。
这样做有可能吗?
编辑 :问题的当前状态...
WebView 能够设置 WebViewClient (正如Axarydax所指出的那样)。 WebViewClient 有两个有用的方法
WebView
WebViewClient
shouldOverrideUrlLoading
onLoadResource
如果加载是由页面交互触发的(例如,页面上的链接被单击,则WebView.loadURL("")不会触发此方法),则 shouldOverrideUrlLoading 能够拦截任何URL加载。它还可以通过返回false来取消URL加载。这种方法是不可用的,因为它不能拦截页面资源的加载(以及图像,我需要拦截的是这样的页面资源)。
onLoadResource 会在每次页面资源(和图像!thx到Jessyjones)正在加载,但无法取消。这使得这种方法也不适合我的任务。
发布于 2011-03-03 22:16:11
看起来API level 11支持你所需要的东西。参见 WebViewClient.shouldInterceptRequest() 。
WebViewClient.shouldInterceptRequest()
发布于 2011-01-26 21:23:20
试试这个,我已经在一个类似维基的个人应用中使用过:
webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.startsWith("foo://")) {