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