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