Loading Cache when Offline in Android Webview
I have an application which loads urls开发者_开发知识库 from a website. Now I want the application to use the cache when offline. But I just get the failure page which says that im not connected to the website. At first I set the Cachemode to Load_Normal but this doesn't help. Next I tried a realy "silly" approach using the 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);
}
but this just leads to crashing the application.
Is there a simple way to load the cache when offline and existing and just if not existing showing the failure message.
OK. The code is fine above. The permission needed to be added are:
.INTERNET
.ACCESS_NETWORK_STATE
.ACCESS_WIFI_STATE
In addition to the permissions
.INTERNET
.ACCESS_NETWORK_STATE
.ACCESS_WIFI_STATE
mentioned in another answer, I also needed the following changes to the code:
if(cm != null && cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected()){
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
}
else{
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
}
Otherwise the app would crash when trying to get the network info on first startup, if I were not connected to either WiFi or Mobile Network.
精彩评论