2010-09-24 8 views
14

J'ai une application qui charge des URL à partir d'un site Web. Maintenant, je veux que l'application utilise le cache en mode hors connexion. Mais je viens d'obtenir la page d'échec qui dit que je ne suis pas connecté au site Web. Au début, j'ai mis le Cachemode à Load_Normal mais cela n'aide pas. Ensuite, j'ai essayé une approche « stupide » en utilisant la ConnectivityManager realy:Chargement du cache en mode hors connexion dans Android Webview

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); 
} 

mais cela conduit juste pour écraser l'application.

Existe-t-il un moyen simple de charger le cache lorsqu'il est hors ligne et existant et s'il n'existe pas, il affiche le message d'échec.

Répondre

15

OK. Le code est bien au dessus. L'autorisation nécessaire à ajouter sont:

.Internet

.ACCESS_NETWORK_STATE

.ACCESS_WIFI_STATE

9

En plus des autorisations

.Internet

.ACCESS_NETWORK_STATE

.ACCESS_WIFI_STATE

mentionné dans une autre réponse, j'ai aussi besoin les modifications suivantes au 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); 
} 

Sinon, l'application se bloquait en essayant d'obtenir les informations de réseau au premier démarrage, si je pas connecté soit au WiFi ou au réseau mobile.

Questions connexes