Android Webview离线时如何加载缓存

20

我的应用程序从网站加载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);
}

但这只会导致应用程序崩溃。

有没有一种简单的方法可以在离线和存在缓存时加载缓存,如果不存在则显示失败消息。

2个回答

20

好的,上面的代码没问题。需要添加的权限是:

.INTERNET

.ACCESS_NETWORK_STATE

.ACCESS_WIFI_STATE


13

除了另一个回答中提到的权限

.INTERNET

.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也没有连接移动网络,尝试获取网络信息时应用程序将崩溃。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接