Android Webview离线时加载缓存
Posted
技术标签:
【中文标题】Android Webview离线时加载缓存【英文标题】:Loading Cache when Offline in Android Webview 【发布时间】:2011-04-16 19:29:48 【问题描述】:我有一个从网站加载 url 的应用程序。现在我希望应用程序在离线时使用缓存。但我只是得到失败页面,上面写着我没有连接到网站。起初我将 Cachemode 设置为 Load_Normal 但这没有帮助。接下来,我使用 ConnectivityManager 尝试了一种非常“愚蠢”的方法:
cm = (ConnectivityManager) this.getSystemService(Activity.CONNECTIVITY_SERVICE);
if(cm.getActiveNetworkInfo().isConnected())
mfnWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
mfnWebView.loadUrl(url);
else
mfnWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
mfnWebView.loadUrl(url);
但这只会导致应用程序崩溃。
有没有一种简单的方法可以在离线且存在时加载缓存,如果不存在则显示失败消息。
【问题讨论】:
【参考方案1】:好的。上面的代码很好。需要添加的权限是:
.互联网
.ACCESS_NETWORK_STATE
.ACCESS_WIFI_STATE
【讨论】:
【参考方案2】:除了权限
.互联网
.ACCESS_NETWORK_STATE
.ACCESS_WIFI_STATE
在另一个答案中提到,我还需要对代码进行以下更改:
if(cm != null && cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected())
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
else
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
否则,如果我没有连接到 WiFi 或移动网络,应用程序会在首次启动时尝试获取网络信息时崩溃。
【讨论】:
以上是关于Android Webview离线时加载缓存的主要内容,如果未能解决你的问题,请参考以下文章
在Glide for Android中离线时加载已获取的图像
当设备在 react-native 中离线时,在 webview 中显示本地图像