我正在尝试在 WebView 中,在网络断开时显示网站的 HTML5 离线缓存版本。
我已经成功地重写了 onReceivedError
方法,当网络断开时,该方法被调用。但问题在于,它只显示了常规的“网页无法访问”的消息。
我该如何获取并显示页面的 HTML5 离线缓存版本呢? Web 应用程序的离线存储明显正在工作中,因为在桌面版 Firefox 和 Chrome 中,应用程序可以正常运行。
我知道我可以在 onReceivedError
中手动调用 loadData
将数据加载到视图中,但我不确定从哪里获取 HTML5 缓存值。
请注意:如果我在 loadData
中设置一些虚假数据(比如view.loadData(Uri.encode("<html><div>Page load failed</div></html>"), "text/html", "UTF-8");
),然后通过检测返回事件并调用 webView.goBack();
返回,则可以正确显示页面的缓存版本。
以下是我添加到设置 WebView 的代码:
webview.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
webview.getSettings().setAppCacheMaxSize(1024*1024*8);
webview.getSettings().setAppCachePath("/data/data/com.stuff.android/cache");
webview.getSettings().setAllowFileAccess(true);
webview.getSettings().setAppCacheEnabled(true);
webview.getSettings().setDomStorageEnabled(true);
webview.getSettings().setJavaScriptEnabled(true);