Webviewを使用してデータを表示するAndroidアプリの開発で大きな問題に直面しています。Webviewで使用しているWebサイトは、HTML5のlocalStorageAPIを使用しています。
この機能を有効にするために、次のようにWebビュー設定を設定しました。
webview.getSettings().setDomStorageEnabled(true);
webview.getSettings().setJavaScriptEnabled(true);
そのため、localStorage APIは機能しますが、アプリを閉じる(そしてプロセスを強制終了する)と、localStorageは完全に消去され、リロードするとすべてのデータが失われます。
私の質問は簡単です:アプリを閉じてもWebviewのDomStorageを永続化するにはどうすればよいですか?
今後ともよろしくお願いいたします。
DatabasePathを設定しましたか? Androidは、呼び出しを設定しない場合、デフォルトでDOMDatabaseを保存する場所を知りません
webview.getSettings().setDatabasePath()
// Confimed on Android 2.1 emulator
// enable javascript localStorage
WebSettings webSettings = myWebView.getSettings();
webSettings.setDomStorageEnabled(true); // localStorage
// e.g., if your package is www.myapp.whatever;
webSettings.setDatabasePath("/data/data/www.myapp.whatever/databases/");
データベースを有効にし、そのパスを設定する必要があります。
webview.getSettings().setDatabaseEnabled(true);
webview.getSettings().setDatabasePath();
webSettings.setDomStorageEnabled(true);
最初の行はかなり長い間私を捕まえました...
上記の投稿は、2つの異なる概念を混ぜ合わせています。
セッションが閉じられた後もデータを永続化するには、(JavaScriptで)sessionStorageを使用していないことを確認してください
DOMStorageとデータベースストレージは2つの異なるものです。データベースストレージはHTML5の一部ではありません: http://www.tutorialspoint.com/html5/html5_web_sql.htm
DOMStorageはHTML5との関連性が高く、セッションストレージが含まれています。セッションストレージは、設計上、ブラウザを閉じると消えます。 「DOMストレージ」よりも「ローカルストレージ」を検索すると、より多くのヒットが見つかります。
http://viralpatel.net/blogs/introduction-html5-domstorage-api-example/
したがって、DOMstorageを有効にするには、次のものが必要です。webSettings.setDomStorageEnabled(true);
この問題は解決されました この投稿では Android v4.1.1のアップデートで。