gpt4 book ai didi

android - 在android中显示缓存版本的webview

转载 作者:太空狗 更新时间:2023-10-29 13:26:53 24 4
gpt4 key购买 nike

我正在尝试让网站的 HTML5 离线缓存版本在 WebView 内部出现故障时显示。

我已经覆盖了onReceivedError好的,当网络中断时调用此方法。问题是它显示通用的“网页不可用”消息。

如何让它显示页面的 HTML5 缓存版本?Web 应用程序的离线存储肯定可以正常工作,因为它在 Firefox 和 Chrome 的桌面版本中运行良好。

我知道我可以打电话 loadDataonReceivedError 中手动进入 View ,但我不确定从哪里可以获取 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);

最佳答案

尝试使用以下方式找出网络状态

private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null;
}

( Detect whether there is an Internet connection available on Android )

这也需要

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

在你的 AndroidManifest.xml 中

现在您可以将缓存行为设置为 LOAD_CACHE_ONLY 或 LOAD_NO_CACHE,具体取决于网络连接是否可用,

webview.getSettings().setCacheMode(...)

关于android - 在android中显示缓存版本的webview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8467998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com