在Android WebView
中,我想显示网站并将包含这些网站中所有图片的完整HTML下载到设备的存储空间。
当WebView
下载页面的所有资源以便能够显示它时,如果我在WebView
中加载页面然后再次下载HTML和图像,那将是多余的工作,对吗?
所以我想你可以访问WebView
下载的内容,然后将它们复制到设备的存储中。这可能吗?
根据this page,你可以设置JavaScript接口,然后像这样调用一些JavaScript语句:
webView.loadUrl("javascript:doSomething()");
如果我只使用JavaScript的document.innerHTML
或document.getElementById('theID').innerHTML
,我就可以获得该网页的HTML。
对于图像,是否有比使用JavaScript更简单的解决方案?问题是我不只是想要URL而是需要加载的资源。 WebView已经下载了所有资产,因此问题是它是否以某种方式公开了对它们的访问。
如this question所述,似乎可以使用上下文菜单事件获取图像。 (Maybe even background images.)但有没有一个解决方案不需要用户操作并批量保存所有图像,最好不再下载它们?
答案 0 :(得分:4)
简而言之:不。没有API可以从Java从WebView访问下载的资源。你需要推出自己的解决方案。
在图像的情况下,我能想到避免重新下载资源的唯一方法是编写一些javascript,一旦将图像加载到<canvas>
元素中就复制该图像然后读取字节返回作为数据URL。然后,您可以从该数据URL重新创建Java端的映像(通过WebView中的JavaScript接口将其传递给Java)并将其保存到磁盘或以其他方式使用它。
这些链接可能对您有所帮助:
Canvas和toDataUrl: http://www.html5canvastutorials.com/advanced/html5-canvas-get-image-data-url/
WebView JavaScript界面:http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object, java.lang.String中)