2012-10-03 66 views
1

我想使用的應用程序緩存HTML5爲Android PhoneGap的應用程序可以運行,但不工作,不與ApplicationCahce活動感覺。緩存不中的Android應用程序的PhoneGap

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

此外,此代碼在iOS PhoneGap和Android Browser中運行,此鏈接用於支持的平臺。 Application Cahce Supported platforms

因此,任何建議將是有益的。

回答

6

我相信應用程序緩存默認情況下不會在WebView中啓用。你需要做的是擴展DroidGap調用的Java類:

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

在你的onCreate()方法中。

你也可能需要調用:

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

請注意,您撥打setAppCachePath之前緩存目錄必須存在()。

閱讀上...

http://developer.android.com/reference/android/webkit/WebSettings.html#setAppCacheEnabled(booleanhttp://developer.android.com/reference/android/webkit/WebSettings.html#setAppCacheMaxSize(longhttp://developer.android.com/reference/android/webkit/WebSettings.html#setAppCachePath(java.lang.String

+0

謝謝,但什麼是你爲我建議的pathToCacheDir。 –

+1

/data/data/{軟件包名稱}/app_cache或/ sdcard/Android/data/{軟件包名稱}/app_cache似乎是合理的默認值。 –

+0

感謝它的工作正常。 –

1

對於pathToCacheDir,使用:

String pathToCacheDir = this.getApplicationContext().getCacheDir().getAbsolutePath() 
+0

這條道路? ,爲什麼這個地方? –

+1

參見[Context.getCacheDir](http://developer.android.com/reference/android/content/Context.html#getCacheDir%28%29)。從API文檔:返回文件系統上特定於應用程序的緩存目錄的絕對路徑。您可以運行Log.d(「mytest」,pathToCacheDir);'查看LogCat中的路徑。 – stianlik

1

你設置正確的MIME類型? 起初,我用的是 '.TXT' 像thie:

<!DOCTYPE html> 
<html manifest="cache.txt"> 
<head> 

它運作良好,在iOS上,Chrome,但在Android不工作!

當我設置了正確的MIME類型,它工作得很好〜

在Tomcat中,默認的擴展名是 '.appcache',默認MIME類型爲:

<mime-mapping> 
    <extension>appcache</extension> 
    <mime-type>text/cache-manifest</mime-type> 
</mime-mapping> 
相關問題