6

我在 WebView 的帮助下创建了一个基本的浏览器。

当我访问一个网站(包含一些文本和一些图像)时,/data/data/com.mayexample/cache/webViewCacheChromium 中的缓存目录被一些称为 index、data_0、data_1、data_2、f_00001、f_00002 等的文件填充.

我想知道,这些文件的格式是什么,它们包含什么?我想“所以,其中一些文件肯定必须是网站的图像”并尝试在文件管理器中打开它们(以图像形式打开)。但是无论我选择什么文件,该过程都会显示“加载失败!”。即使我将其中一些重命名为 .jpg,我仍然无法打开任何东西。我在互联网上读到这对某些人有用(看看 Android WebView - Load Images from cache,这正是我想要做的),但我不能对缓存的文件做任何事情。

你知道打开 webview 缓存文件的方法吗?例如,一个文件不是代表相应的缓存图像吗?

我真正想要实现的(一旦我了解缓存文件的结构)是以编程方式从它的缓存中获取 webview 的图像,就像上面发布的链接的作者一样(不幸的是,这个帖子的答案没有多大帮助)

谢谢!

4

2 回答 2

1

缓存的文件可能是 CSS 或 JS/image/html 类型之一。在较早的 Android 版本中,一个缓存文件只映射一个 CSS 或 JS/image/html 文件。


据我所知,浏览器引擎(实际上是 HTTP 模块)以 URL-to-HashKey 的方式维护这些缓存文件。所以你发现的(如“4f42185de3a3a461_1”)可能与任何网络资源文件相关联,如JS/CSS/images/HTML等。

我记得在早期的 Android 版本中,WebView 用于将此类 URL-to-HashKey 映射数据存储在 sqlite3 表中。

这里的问题是你不知道映射关系,所以你很难检索到你想要的文件。一个棘手的方法是阅读 AOSP 源代码,然后您可能能够知道如何通过唯一 URL 生成 HashKey,或者您可以操作 sqlite3 表,如果在 Android 4.4 上仍然存在的话。

于 2014-11-26T12:22:03.810 回答
0

我能够使用专为 Chrome 桌面浏览器设计的工具查看 webViewCacheChromium 文件夹中的文件:

http://www.nirsoft.net/utils/chrome_cache_view.html

内容基本上是您对 Web 缓存的期望 - 图像、javascript、css、html。

于 2013-01-24T15:17:52.423 回答