2013-04-30 136 views
0

Android中的PhoneGap應用程序未使用緩存文件。 但HTML5應用程序緩存已啓用並正確觸發事件。Android中的PhoneGap應用程序未使用HTML5應用程序緩存

我做了一個網站使用HTML5應用程序緩存:

索引文件:

<!DOCTYPE html> 
<html manifest="cache.appcache"> 
<head> 
    <link rel="stylesheet" type="text/css" href="site.css"> 
</head> 
<body> 
    <div> 
     Hello World 
    </div> 
</body> 
</html> 

css文件:

div{ 
    background-color: red; 
} 

應用程序緩存文件:

CACHE MANIFEST 
#v1 

CACHE: 
site.css 

它運作良好在Chrome,iOS Web上Broswer,iOS中的PhoneGap,Android 2.1 Web Broswer。 但它在Android的PhoneGap中無法使用!

我使用命令行創建了Android PhoneGap應用程序,只是將啓動網址修改爲我的網站。 應用程序將正確地觸發應用程序緩存事件:

// Fired after the first cache of the manifest. 
appCache.addEventListener('cached', handleCacheEvent, false); 

// Checking for an update. Always the first event fired in the sequence. 
appCache.addEventListener('checking', handleCacheEvent, false); 

// An update was found. The browser is fetching resources. 
appCache.addEventListener('downloading', handleCacheEvent, false); 

我並沒有修改cache.appcache文件!事件表明緩存沒有修改。 但它不使用應用程序緩存。 它有什麼問題?

回答

0

2.5的PhoneGap的發佈說明告訴我們,它支持應用程序緩存,並解決了問題。(在舊版本中,你需要編寫一些代碼,使應用程序緩存)

我使用的PhoneGap 2.6 ,應用程序緩存不起作用,但是當我編寫一些代碼來啓用它時,它運行良好。

這樣的代碼:

public class HelloWorld extends DroidGap { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // Set by <content src="index.html" /> in config.xml 

     super.init(); 
     android.webkit.WebSettings settings = super.appView.getSettings(); 
     String appCachePath = this.getCacheDir().getAbsolutePath(); 
     settings.setAppCachePath(appCachePath); 
     settings.setAllowFileAccess(true); 
     settings.setAppCacheEnabled(true); 

     // super.loadUrl(Config.getStartUrl()); 
     super.loadUrl("http://192.168.0.104:8080/cache/index.html"); 
    } 
} 
相關問題