从Android中的WebView获取所有图像

时间:2013-11-22 19:09:26

标签: android android-webview

在Android WebView中,我想显示网站并将包含这些网站中所有图片的完整HTML下载到设备的存储空间。

WebView下载页面的所有资源以便能够显示它时,如果我在WebView中加载页面然后再次下载HTML和图像,那将是多余的工作,对吗?

所以我想你可以访问WebView下载的内容,然后将它们复制到设备的存储中。这可能吗?

根据this page,你可以设置JavaScript接口,然后像这样调用一些JavaScript语句:

webView.loadUrl("javascript:doSomething()");

如果我只使用JavaScript的document.innerHTMLdocument.getElementById('theID').innerHTML,我就可以获得该网页的HTML。

对于图像,是否有比使用JavaScript更简单的解决方案?问题是我不只是想要URL而是需要加载的资源。 WebView已经下载了所有资产,因此问题是它是否以某种方式公开了对它们的访问。

this question所述,似乎可以使用上下文菜单事件获取图像。 (Maybe even background images.)但有没有一个解决方案不需要用户操作并批量保存所有图像,最好不再下载它们?

1 个答案:

答案 0 :(得分:4)

简而言之:不。没有API可以从Java从WebView访问下载的资源。你需要推出自己的解决方案。

在图像的情况下,我能想到避免重新下载资源的唯一方法是编写一些javascript,一旦将图像加载到<canvas>元素中就复制该图像然后读取字节返回作为数据URL。然后,您可以从该数据URL重新创建Java端的映像(通过WebView中的JavaScript接口将其传递给Java)并将其保存到磁盘或以其他方式使用它。

这些链接可能对您有所帮助: