2013-05-07 34 views
2

我有WebView,并且希望将某些网页保存到内部或外部存储以便离线访问。请提供一些例子,如果有人已经通过这个。如何保存完整的网页并稍后加载以供离线访问

+0

嘿..你是怎么解决这个问题的..我必须实现类似这样的东西,你的建议会很棒。 – 2013-10-11 13:05:43

+0

非常感谢这个人https://github.com/gregko/WebArchiveReader为他的库,它帮助我加载'WebArchive'保存为'xml' – Antarix 2013-10-12 06:07:29

回答

1

尝试下面的代码实现您的任务,并检查this链接: -

WebView webView = new WebView(context); 
webView.getSettings().setAppCacheMaxSize(5 * 1024 * 1024); // 5MB 
webView.getSettings().setAppCachePath(getApplicationContext().getCacheDir().getAbsolutePath()); 
webView.getSettings().setAllowFileAccess(true); 
webView.getSettings().setAppCacheEnabled(true); 
webView.getSettings().setJavaScriptEnabled(true); 
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); // load online by default 

if (!isNetworkAvailable()) { // loading offline 
    webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 
} 

webView.loadUrl("http://www.google.com"); 

许可需要

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
+0

已检查我提供给你的链接,上面的代码!!!! – duggu 2013-05-07 11:18:19

+0

我很欣赏你的答案,但我真正想要的是我想给选项来保存该网页,并在'ListView'中详细显示如title,更多详细信息请参阅此应用程序的脱机功能https://play.google.com /store/apps/details?id=com.world.newspapers – Antarix 2013-05-08 04:35:51

0

如果你有机会到服务器端,最好的想法会应该使用HTML5缓存清单,正如我在这里描述的那样:https://stackoverflow.com/a/14348234/737885

如果你不喜欢您可以尝试简单地将其缓存为HCD建议的内容,但该解决方案取决于HTTP标头和其他考虑事项,因此它可能不是防弹的。

另一种解决方案是通过WebViewClient回调(参见http://developer.android.com/reference/android/webkit/WebViewClient.html)将WebView指向组成该站点的URL,并使用HttpClient手动下载每个资源。这是三者中唯一的解决方案,它创建了可重复使用的网站副本。另一个基于WebView缓存,因此您只能在同一个WebView中使用缓存副本。

相关问题