3

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

4

2 回答 2

1

尝试以下代码来完成您的任务并检查链接:-

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"/>
于 2013-05-07T11:13:42.017 回答
1

如果您可以访问服务器端,最好的办法是使用 HTML5 缓存清单,正如我在这里描述的那样:https ://stackoverflow.com/a/14348234/737885

如果您不这样做,您可以尝试按照 HCD 的建议简单地对其进行缓存,但该解决方案取决于 HTTP 标头和其他考虑因素,因此它可能不是万无一失的。

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

于 2013-05-07T11:19:56.220 回答