2012-10-14 9 views
5

Wiem, że mój appcache w aplikacji internetowej działa dobrze, ponieważ próbowałem go w Chrome, nawet w Chrome na Androida działa, ale nie ma go podczas ładowania go w mojej aplikacji na Androida z poziomu widoku . Mam następujące ustawienia:Appcache na Androidzie Webview nie pobiera źródeł

myWebView = (WebView) v.findViewById(R.id.webView); 
    WebSettings webSettings = myWebView.getSettings(); 
    webSettings.setDomStorageEnabled(true); 
    webSettings.setJavaScriptEnabled(true); 
    webSettings.setSupportMultipleWindows(true); 
    webSettings.setJavaScriptCanOpenWindowsAutomatically(true); 
    webSettings.setAppCacheMaxSize(1024*1024*16); 
    String appCachePath = getActivity().getApplicationContext().getCacheDir().getAbsolutePath(); 
    webSettings.setAppCachePath(appCachePath); 
    webSettings.setAllowFileAccess(true); 
    webSettings.setAppCacheEnabled(true); 
    webSettings.setCacheMode(WebSettings.LOAD_DEFAULT); 
    webSettings.setDatabaseEnabled(true); 
    String databasePath = "/data/data/" + getActivity().getPackageName() + "/databases/"; 
    webSettings.setDatabasePath(databasePath); 
    webSettings.setGeolocationEnabled(true); 
    webSettings.setSaveFormData(true); 

Ale podczas ładowania aplikacji, w LogCat mogę odczytać następujące

10-15 01:21:43.815: E/SQLiteLog(14278): (1) no such table: CacheGroups 10-15 01:21:43.815: D/WebKit(14278): ERROR: 10-15 01:21:43.815: D/WebKit(14278): Application Cache Storage: failed to execute statement "DELETE FROM CacheGroups" error "no such table: CacheGroups" 10-15 01:21:43.815: D/WebKit(14278): external/webkit/Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp(558) : bool WebCore::ApplicationCacheStorage::executeSQLCommand(const WTF::String&) 10-15 01:21:43.815: E/SQLiteLog(14278): (1) no such table: Caches 10-15 01:21:43.815: D/WebKit(14278): ERROR: 10-15 01:21:43.815: D/WebKit(14278): Application Cache Storage: failed to execute statement "DELETE FROM Caches" error "no such table: Caches" 10-15 01:21:43.815: D/WebKit(14278): external/webkit/Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp(558) : bool WebCore::ApplicationCacheStorage::executeSQLCommand(const WTF::String&) 10-15 01:21:43.815: E/SQLiteLog(14278): (1) no such table: Origins 10-15 01:21:43.815: D/WebKit(14278): ERROR: 10-15 01:21:43.815: D/WebKit(14278): Application Cache Storage: failed to execute statement "DELETE FROM Origins" error "no such table: Origins" 10-15 01:21:43.815: D/WebKit(14278): external/webkit/Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp(558) : bool WebCore::ApplicationCacheStorage::executeSQLCommand(const WTF::String&) 10-15 01:21:43.815: E/SQLiteLog(14278): (1) no such table: DeletedCacheResources

I oczywiście pamięć podręczną aplikacji nie działa =/Czy robię coś źle? Dzięki!

+0

to wciąż mi przeszkadza, po prostu nie mogę znaleźć sposób, aby to działało. Jakieś sugestie? Dzięki :) –

+0

Po prostu zgaduję: spróbuj wywołać 'setAppCacheEnabled (true)' before 'setAppCacheMaxSize (1024 * 1024 * 16)' i 'setAppCachePath (appCachePath)'. Poza tym: z której wersji Androida korzystasz? –

+0

@Alberto Elias Witam, czy udało ci się dowiedzieć, dlaczego pamięć podręczna nie działa? Mam dokładnie ten sam problem. – turtleboy

Odpowiedz

0

założyć db zanim pamięć podręczną aplikacji i domstore, ustawić dowolny "parametr" podobnego zestawu * Path()/set * Rozmiar() przed zestawie * Enabled()

obok, że to może nie być dobrym pomysłem jeśli stos dwa niezależnie zarządzanych bufory na siebie podczas korzystania

getActivity(). getApplicationContext(). getCacheDir(). getAbsolutePath()

w katalogu, w którym menedżer cache Webview powinny przechowywać swoje dane

W menadżer pamięci podręcznej aktywności podejmuje decyzję o usunięciu pliku utworzonego przez menedżera pamięci podręcznej przeglądarki, menedżer pamięci podręcznej przeglądarki internetowej nie jest powiadamiany i może dalej polegać na istnieniu jego funkcji. Może on działać długo, ale pewnego dnia może stać się naprzemiennym błędem. to jest trudne do zidentyfikowania

0

są to ustawienia, które pracują dla mnie:

CookieSyncManager.createInstance(contextForDialog); 
webView = (WebView) findViewById(R.id.webView1); 

WebSettings settings = webView.getSettings(); 

settings.setRenderPriority(RenderPriority.HIGH); 
settings.setCacheMode(WebSettings.LOAD_DEFAULT); 

settings.setSaveFormData(true); 
settings.setLoadsImagesAutomatically(true); 
settings.setJavaScriptEnabled(true); 
settings.setDatabaseEnabled(true); 
settings.setDomStorageEnabled(true); 
settings.setAppCacheMaxSize(1024*1024*1024*8); 
String sDataPath = context.getDir("database", Context.MODE_PRIVATE).getPath(); 
settings.setDatabasePath(sDataPath); 
settings.setAppCachePath(sDataPath); 
settings.setAllowFileAccess(true); 
settings.setAppCacheEnabled(true); 
settings.setAllowFileAccess(true); 
settings.setGeolocationEnabled(true); 
settings.setSavePassword(true); 

webView.setFocusable(true); 
webView.setFocusableInTouchMode(true); 
settings.setDatabaseEnabled(true); 
settings.setAllowContentAccess(true); 
settings.setLoadsImagesAutomatically(true); 
webView.addJavascriptInterface(this, "AndroidInterface"); 
WebView.setWebViewClient(new routeNavClient()); 
webView.setWebChromeClient(new webChromeClient()); 
CookieManager c = CookieManager.getInstance(); 
c.setAcceptCookie(true);