Home / Programmazione / Java Android / Android WebView offline
Mattepuffo

Android WebView offline

Android WebView offline

Tempo fa abbiamo parlato delle Webview in Android; questo componente permette di visualizzare pagine web dentro le nostre app.

Basandosi su Webkit, le WebView hanno un ottimo supporto ad HTML 5.

L'unico svantaggio è che se il device è offline non è possibile visualizzare le pagine.

Possiamo però impostarle per tenere le pagine anche offline in cache.

Cosa finadamentale è che la pagine web non sia impostata per non permettere la cache con impostazioni di questo tipo:

Cache-control: no-store, no-cache
Pragma: no-cache

Una volta verificato ciò, passiamo alla app.

Prima di tutto verifichiamo che il device sia connesso:

public class CheckConn {

    public static boolean isNetworkAvailable(Context context) {
        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo ni = cm.getActiveNetworkInfo();
        if (ni == null) {
            return false;
        }
        return ni.isConnected();
    }

}

Ho già parlato anche di questo, quindi non mi soffermo a spiegare.

A questo punto, nella nostra Activity:

WebView webView = (WebView)findViewById(R.id.webView);
webView.getSettings().setAppCacheMaxSize(5 * 1024 * 1024); // 5MB
webView.getSettings().setAppCachePath(getApplicationContext().getCacheDir().getAbsolutePath());
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); // LOAD ONLINE BY DEFAULT
if (!CheckConn.isNetworkAvailable(this)) {
    webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
}
webView.loadUrl("http://www.miosito.com");

In pratica abbiamo impostato una cache massima di 5MB, e sotto abbiamo impostato altri parametri.

Come vedete di default prendiamo la versione online, ma sotto facciamo un controllo e verifichiamo che ci sia connessione, e in caso leggiamo la cache.

Infine ricordiamoci di impostare i permessi per la verifica della conessione e per la navigazione:

   
   
    

Direi che è tutto!