我想从网页获取图像并将其保存到本地存储中。我可以找到来自HTML
的所有图像URL,从服务器加载这些图像并保存它们。但我不想第二次访问服务器,获取已在webview
中的相同信息。所以我想知道如何从webview
加载图像?从wevbiew获取已加载的图像
回答
您可以通过几个步骤设置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
官方文档中上述常数的其他可能值。
让我知道它是否有效。
你好yugidroid。感谢您的快速反应,并为迟到感到抱歉))这是我得到的。我在'cacheDir'目录中只找到一个'applicationCache.db'文件。它有10个表格:'CacheGroups,sqlite_sequence,Caches,CacheWhitelistURLs,CacheAllowsAllNetworkRequests,FallbackURLs,CacheEntries,CacheResources,CacheResourceData,android_metadata'。除最后一个表格外,所有表格都是空的,只包含一个原始格式:类似于'en-EN'。我在“WebView”中打开了一些页面后,我做了所有这些。所以很奇怪,我在缓存目录中找不到任何信息。 – Hayk
非常欢迎您。 您是否已经尝试查看是否有相同的内容(据推测在缓存中)可用于您的应用程序,但没有任何类型的Internet连接? – yugidroid
是的,它似乎缓存了我需要的所有信息('HTML',图像,'JS'文件,'CSS'文件)。我想手动创建这种缓存...通常这解决了我的问题,所以我接受这个答案。但是现在我还有一个缓存失效的问题:我想让缓存只针对特定的URL而不是整个缓存。 – Hayk
- 1. 从UIWebView获取加载的图像
- 2. 获取已加载
- 3. 如何获取动态加载的图像的图像加载?
- 4. AJAX:获取HTML并检查图像是否已完成加载
- 5. 从已经加载的地图获取标记
- 6. 获取每个加载的图像
- 7. 获取ajax加载图像的大小
- 8. 如何检查已加载的图像是否已加载JavaScript?
- 9. 在angularjs中获取并加载图像
- 10. 获取图像高度,然后加载
- 11. 从通用图像加载器库获取位图
- 12. 通过Python从给定的URL中获取加载的图像
- 13. 如何从Web上加载图像后获取图像的本地路径?
- 14. 从TripAdvisor抓取动态加载图像
- 15. Drupal 7 - 获取已加载的节点
- 16. 使用通用图像加载器,但图像获取只加载一次
- 17. 获取已删除图像的名称
- 18. 通用图像加载程序:从抽头获取ImageView对象
- 19. 从URl Android加载图像时获取内存泄漏
- 20. 如何在加载时从图像中获取颜色?
- 21. 挂钩从布局加载后获取图像
- 22. 如何从系统中获取图像画布上加载HTML5
- 23. jQuery在图像加载之前获取图像高度?
- 24. jquery图像预加载获取图像高度
- 25. 图像加载后获取图像高度
- 26. 在加载图像之前获取图像大小
- 27. 当我的图像仍然从服务器加载时,如何获取占位符图像加载
- 28. 从毕加索获取图像uri?
- 29. jQuery - 检查图像已加载
- 30. 已使用jquery加载支票图像
你有没有想过要实现一个缓存系统? – yugidroid
在这种情况下,我想实现某种缓存。 – Hayk