web-dev-qa-db-ja.com

Android-アプリを閉じた後もWebviewDomStorageを永続化する

Webviewを使用してデータを表示するAndroidアプリの開発で大きな問題に直面しています。Webviewで使用しているWebサイトは、HTML5のlocalStorageAPIを使用しています。

この機能を有効にするために、次のようにWebビュー設定を設定しました。

webview.getSettings().setDomStorageEnabled(true);
webview.getSettings().setJavaScriptEnabled(true);

そのため、localStorage APIは機能しますが、アプリを閉じる(そしてプロセスを強制終了する)と、localStorageは完全に消去され、リロードするとすべてのデータが失われます。

私の質問は簡単です:アプリを閉じてもWebviewのDomStorageを永続化するにはどうすればよいですか?

今後ともよろしくお願いいたします。

24
jimroot25

DatabasePathを設定しましたか? Androidは、呼び出しを設定しない場合、デフォルトでDOMDatabaseを保存する場所を知りません

webview.getSettings().setDatabasePath()
10
Panthro
// 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/");
9
ozmike

データベースを有効にし、そのパスを設定する必要があります。

webview.getSettings().setDatabaseEnabled(true);
webview.getSettings().setDatabasePath();
webSettings.setDomStorageEnabled(true);

最初の行はかなり長い間私を捕まえました...

6
rdougan

上記の投稿は、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);

0
nurieta

この問題は解決されました この投稿では Android v4.1.1のアップデートで。

0
Lisarien