Chromeで試してみたので、Webアプリのappcacheがうまく機能することはわかっています.Chrome for Androidでも機能しますが、WebビューからAndroidアプリにロードすると機能しません。次の設定があります。
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);
しかし、アプリをロードするとき、logcat で次のように読むことができます
10-15 01:21:43.815: E/SQLiteLog(14278): (1) そのようなテーブルはありません: CacheGroups 10-15 01:21:43.815: D/WebKit(14278): エラー: 10-15 01:21:43.815 : D/WebKit(14278): アプリケーション キャッシュ ストレージ: ステートメント「DELETE FROM CacheGroups」エラー「そのようなテーブルはありません: CacheGroups」の実行に失敗しました 10-15 01:21:43.815: D/WebKit(14278): 外部/webkit/ソース/WebCore/loader/appcache/ApplicationCacheStorage.cpp(558): bool WebCore::ApplicationCacheStorage::executeSQLCommand(const WTF::String&) 10-15 01:21:43.815: E/SQLiteLog(14278): (1) そのようなものはありませんテーブル: キャッシュ 10-15 01:21:43.815: D/WebKit(14278): エラー: 10-15 01:21:43.815: D/WebKit(14278): アプリケーション キャッシュ ストレージ: ステートメント「DELETE FROM Caches」の実行に失敗しましたエラー "そのようなテーブルはありません: キャッシュ" 10-15 01:21:43.815: D/WebKit(14278):外部/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" エラー "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) そのようなテーブルはありません: DeletedCacheResources21:43.815: E/SQLiteLog(14278): (1) そのようなテーブルはありません: Origins 10-15 01:21:43.815: D/WebKit(14278): エラー: 10-15 01:21:43.815: D/WebKit( 14278): アプリケーション キャッシュ ストレージ: ステートメント「DELETE FROM Origins」エラー「そのようなテーブルはありません: Origins」の実行に失敗しました 10-15 01:21:43.815: D/WebKit(14278): 外部/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) そのようなテーブルはありません: DeletedCacheResources21:43.815: E/SQLiteLog(14278): (1) そのようなテーブルはありません: Origins 10-15 01:21:43.815: D/WebKit(14278): エラー: 10-15 01:21:43.815: D/WebKit( 14278): アプリケーション キャッシュ ストレージ: ステートメント「DELETE FROM Origins」エラー「そのようなテーブルはありません: Origins」の実行に失敗しました 10-15 01:21:43.815: D/WebKit(14278): 外部/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) そのようなテーブルはありません: DeletedCacheResourcesD/WebKit(14278): 外部/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) そのようなテーブルはありません: DeletedCacheResourcesD/WebKit(14278): 外部/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) そのようなテーブルはありません: DeletedCacheResources
そして明らかにAppCacheが機能していません=/私は何か間違ったことをしていますか? ありがとう!