2012-09-14 46 views
0

我想从网页获取图像并将其保存到本地存储中。我可以找到来自HTML的所有图像URL,从服务器加载这些图像并保存它们。但我不想第二次访问服务器,获取已在webview中的相同信息。所以我想知道如何从webview加载图像?从wevbiew获取已加载的图像

+0

你有没有想过要实现一个缓存系统? – yugidroid

+0

在这种情况下,我想实现某种缓存。 – Hayk

回答

1

您可以通过几个步骤设置WebView缓存。看看下面。

WebView webView =(WebView)findViewById(R.id.your_webView_Id);

String cacheDir = getDir(“your_WV_cache_dir”,Context.MODE_PRIVATE).getAbsolutePath(); webView.getSettings()。setAppCacheMaxSize(1024 * 1024 * 1); // 1 MB缓存限制大小> webView.getSettings()。setAppCachePath(cacheDir); webView.getSettings()。setAppCacheEnabled(true); webView.getSettings()。setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //这个常数对你很重要。如果已经下载了一次,则可以从缓存中加载daa。

您可以看看WebView.WebSettings官方文档中上述常数的其他可能值。

让我知道它是否有效。

+0

你好yugidroid。感谢您的快速反应,并为迟到感到抱歉))这是我得到的。我在'cacheDir'目录中只找到一个'applicationCache.db'文件。它有10个表格:'CacheGroups,sqlite_sequence,Caches,CacheWhitelistURLs,CacheAllowsAllNetworkRequests,FallbackURLs,CacheEntries,CacheResources,CacheResourceData,android_metadata'。除最后一个表格外,所有表格都是空的,只包含一个原始格式:类似于'en-EN'。我在“WebView”中打开了一些页面后,我做了所有这些。所以很奇怪,我在缓存目录中找不到任何信息。 – Hayk

+0

非常欢迎您。 您是否已经尝试查看是否有相同的内容(据推测在缓存中)可用于您的应用程序,但没有任何类型的Internet连接? – yugidroid

+0

是的,它似乎缓存了我需要的所有信息('HTML',图像,'JS'文件,'CSS'文件)。我想手动创建这种缓存...通常这解决了我的问题,所以我接受这个答案。但是现在我还有一个缓存失效的问题:我想让缓存只针对特定的URL而不是整个缓存。 – Hayk