【问题标题】:How to save a complete webpage and load later for offline access如何保存完整的网页并稍后加载以供离线访问
【发布时间】:2013-05-07 11:09:42
【问题描述】:

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

【问题讨论】:

  • 嘿..你是怎么解决这个查询的..我必须实现类似的东西。你的建议会很棒。
  • 非常感谢这个人 github.com/gregko/WebArchiveReader 他的库帮助我加载 WebArchive 保存为 xml

标签: android webview


【解决方案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"/>

【讨论】:

  • 感谢您的回答,但我真正想要的是我想提供选项以保存该网页并在 ListView 中详细显示,如标题,有关更多详细信息,请参阅此应用程序的离线功能 @987654322 @
【解决方案2】:

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

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

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

【讨论】:

  • 缓存清单现在已弃用,它不再在某些浏览器中工作。您可以改用Service Worker 来执行此操作。
猜你喜欢
  • 2013-06-07
  • 1970-01-01
  • 2011-05-15
  • 1970-01-01
  • 2019-07-15
  • 1970-01-01
  • 2013-07-03
  • 1970-01-01
  • 2018-10-21
相关资源
最近更新 更多