在Android Webview中脱机时加载缓存

时间:2010-09-24 13:58:04

标签: android caching webview offline

我有一个从网站加载网址的应用程序。现在我希望应用程序在脱机时使用缓存。但我只是得到了失败页面,上面写着我没有连接到网站。首先我将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 个答案:

答案 0 :(得分:15)

行。代码很好。需要添加的权限是:

.INTERNET

.ACCESS_NETWORK_STATE

.ACCESS_WIFI_STATE

答案 1 :(得分:9)

除了权限

。互联网

.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或移动网络,那么在第一次启动时尝试获取网络信息时应用程序会崩溃。