android - 从 Android 中的 WebView 获取所有图像

标签 android android-webview

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

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

所以我认为您可以访问 WebView 下载的内容,然后将它们复制到设备的存储空间。这可能吗?

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

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

因此,如果我只使用 JavaScript 的 document.innerHTMLdocument.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)并将其保存到磁盘或以其他方式使用它。

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

关于android - 从 Android 中的 WebView 获取所有图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20152635/

相关文章:

android - Re- JobScheduler 结合 FusedLocationProvider Api 经常给出空位置值

android - 如何在 Android 上使用 FirebaseUI 进行帐户链接?

android - 使 Android ActionBar 的 ActionView 的宽度与 ActionBar 的宽度相匹配

android - WebView 的行为不像 Chrome

android - 在webview android上显示网页的一部分

Android:纵向模式下的相机预览方向

Android噪音水平检测和分贝计算

android - WebView 确实需要一些帮助

java - saveWebArchive() 不适用于 Android 4.0.3

java - Android 3.1 WebView 溢出滚动 - 不在滚动上呈现长列表