Application cache in HTML5 doesn't work in Android PhoneGap application
-
13-12-2019 - |
Question
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)
OTHER TIPS
For pathToCacheDir, use:
String pathToCacheDir = this.getApplicationContext().getCacheDir().getAbsolutePath()
did you set the correct mime-type? At first I use the '.txt' like thie:
<!DOCTYPE html>
<html manifest="cache.txt">
<head>
It works well in iOS, Chrome but doesn't work in Android!
When I set the correct mime-type,it works well~
In tomcat,the default extension was '.appcache',and the default mime-type was:
<mime-mapping>
<extension>appcache</extension>
<mime-type>text/cache-manifest</mime-type>
</mime-mapping>