如何保存完整的网页并在以后加载以进行离线访问

时间:2013-05-07 11:09:43

标签: android webview

我有WebView并希望将一些网页保存到内部或外部存储空间以供离线访问。如果有人已经通过这个,请提供一些例子。

2 个答案:

答案 0 :(得分: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"/>

答案 1 :(得分: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中使用缓存副本。