25

我在开发一个使用 Webview 来显示数据的 Android 应用程序时遇到了一个巨大的问题。我在 webview 中使用的网站使用 HTML 5 的 localStorage API。

要启用此功能,我设置了 webview 设置,如下所示:

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

所以 localStorage API 可以工作,但是当我关闭应用程序(并终止进程)时,localStorage 被完全擦除,当我重新加载它时,我的所有数据都丢失了。

我的问题很简单:即使我们关闭应用程序,如何使 Webview 的 DomStorage 持久化?

谢谢你所有未来的答案。

4

6 回答 6

10
// 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/");
于 2011-05-02T10:43:24.777 回答
10

你设置了DatabasePath吗?默认情况下,Android 不知道将 DOMDatabase 保存在哪里,如果您不设置它调用

webview.getSettings().setDatabasePath()
于 2011-03-28T22:04:17.537 回答
7

您必须启用数据库并设置其路径:

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

第一行让我很长一段时间...

于 2012-06-13T21:34:05.770 回答
0

此问题已在此帖子中通过 Android v4.1.1 的更新得到解答。

于 2013-10-28T09:32:24.420 回答
0

上面的帖子混合了两个不同的概念:

要使您的数据在会话关闭后仍然存在,请确保您没有使用(在您的 javascript 上)sessionStorage

DOMStorage 和数据库存储是两个不同的东西。数据库存储不是 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);

于 2013-07-02T11:19:56.817 回答
0
WebSettings webSettings = myWebView.getSettings();
webView.getSettings().setDatabaseEnabled(true);

这就是最新 API 所需要的一切。数据库路径由chrome自动管理

于 2021-09-17T05:12:23.350 回答