Search code examples
androidhtmlcordovaandroid-browserapplication-cache

Application cache in HTML5 doesn't work in Android PhoneGap application


I'm trying to use application cache in HTML5 for Android PhoneGap Application, but this doesn't work, it doesn't feel with ApplicationCahce Events.

function logEvent(event) {
        console.log(event.type);
    }

    window.applicationCache.addEventListener('checking', logEvent, false);
    window.applicationCache.addEventListener('noupdate', logEvent, false);
    window.applicationCache.addEventListener('downloading', logEvent, false);
    window.applicationCache.addEventListener('progress', logEvent, false);
    window.applicationCache.addEventListener('cached', logEvent, false);
    window.applicationCache.addEventListener('updateready', logEvent, false);
    window.applicationCache.addEventListener('obsolete', logEvent, false);
    window.applicationCache.addEventListener('error', logEvent, false);

Also, this code run in iOS PhoneGap and Android Browser and this link for supported platforms. Application Cahce Supported platforms

So, any suggestion it would be helpful.


Solution

  • I believe the application cache is not enabled by default in the WebView. What you will need to do is in the Java class that extends DroidGap call:

    this.appView.getSettings().setAppCacheEnabled(true);
    

    in your onCreate() method.

    You may also need to call:

    this.appView.getSettings().setAppCacheMaxSize(sizeInBytes);
    this.appView.getSettings().setAppCachePath(pathToCacheDir);
    

    Please note the cache directory must exist before you call setAppCachePath().

    Read up on...

    http://developer.android.com/reference/android/webkit/WebSettings.html#setAppCacheEnabled(boolean) http://developer.android.com/reference/android/webkit/WebSettings.html#setAppCacheMaxSize(long) http://developer.android.com/reference/android/webkit/WebSettings.html#setAppCachePath(java.lang.String)