2010-09-24 17 views
14

Ho un'applicazione che carica URL da un sito Web. Ora voglio che l'applicazione utilizzi la cache quando offline. Ma ho appena ricevuto la pagina di errore che dice che non sono collegato al sito web. All'inizio ho impostato il Cachemode su Load_Normal ma questo non aiuta. Poi ho provato un approccio davvero "sciocco" utilizzando il ConnectivityManager:Caricamento cache in modalità offline in Web View Android

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

ma questo porta solo a crash l'applicazione.

C'è un modo semplice per caricare la cache quando non in linea e esistente e solo se non esistente che mostra il messaggio di errore.

risposta

15

OK. Il codice è bene sopra. Il permesso necessario da aggiungere sono:

.Internet

.ACCESS_NETWORK_STATE

.ACCESS_WIFI_STATE

9

Oltre alle autorizzazioni

.Internet

.ACCESS_NETWORK_STATE

.ACCESS_WIFI_STATE

detto in un'altra risposta, ho anche bisogno le seguenti modifiche al codice:

if(cm != null && cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected()){ 
    webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); 
} 
else{ 
    webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 
} 

In caso contrario, l'applicazione potrebbe andare in crash quando si cerca di ottenere le informazioni di rete sul primo avvio, se non fossi collegato a WiFi o rete mobile.

Problemi correlati