我在应用程序中有一个 WebView,在其中打开了一些网站(始终是同一个,是我的自己的网页)。该网站具有加载来自远程主机的某些图像的一些 JS 代码。
我希望拦截对这些图像的请求(通过 URL 模式),并返回自己的内容(即另一张图像),或根据内部应用程序逻辑保持请求不变。
是否可能做到这一点?
编辑:问题的当前状态...
WebView
有设置 WebViewClient
的能力(如 Axarydax 所指出)。WebViewClient
有两个有用的方法:
shouldOverrideUrlLoading
onLoadResource
shouldOverrideUrlLoading
能够拦截任何 URL 加载,如果加载是由页面交互触发的(例如点击页面上的链接,WebView.loadURL("") 不触发此方法)。它还能通过返回 false 来取消 URL 加载。但是,这种方法无法拦截页面资源的加载(而图片是我需要拦截的这种页面资源)。
onLoadResource
触发每次页面资源(包括图片!感谢 Jessyjones)加载时,但无法取消。这使得这种方法也不适合我的任务。
The method ShouldOverrideUrlLoading(WebView, String) of type new WebViewClient(){} must override or implement a supertype method
- Francisco Corrales MoralesshouldOverrideUrlLoading
的这个版本已经被弃用。要解决这个问题,请参考这个问题:https://dev59.com/h1oV5IYBdhLWcg3wPs4Y - Jonik