当前位置:  开发笔记 > 编程语言 > 正文

我的Android HTML应用程序在关闭时会丢失存储在localStorage中的值.其他人都看到这个问题?

如何解决《我的AndroidHTML应用程序在关闭时会丢失存储在localStorage中的值.其他人都看到这个问题?》经验,为你挑选了3个好方法。

我有一个托管Web视图的原生Android 2.1应用程序.我加载了一个包含使用LocalStorage功能的JavaScript的网站.当应用程序运行时,localStorage工作正常.当某些用户退出应用程序并重新启动它时,所有值都消失了.我没有在我的Motrola Droid或Sprint EVO中看到这个问题,但有一个关于此问题的用户报告.

有谁知道我错过了什么?我将以下标志设置为true.

settings.setDomStorageEnabled(true);

dongshengcn.. 17

要使本地存储在Android中适用于您自己的WebView,您需要确保WebView使用正确的文件,并且本地存储启用如下:

String packageName = "com.dongshengcn.android";
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDatabaseEnabled(true);
settings.setDatabasePath("/data/data/"+packageName+"/databases");
settings.setDomStorageEnabled(true);

其中"com.dongshengcn.android"应该替换为您自己的Android应用程序pacakge名称.



1> dongshengcn..:

要使本地存储在Android中适用于您自己的WebView,您需要确保WebView使用正确的文件,并且本地存储启用如下:

String packageName = "com.dongshengcn.android";
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDatabaseEnabled(true);
settings.setDatabasePath("/data/data/"+packageName+"/databases");
settings.setDomStorageEnabled(true);

其中"com.dongshengcn.android"应该替换为您自己的Android应用程序pacakge名称.


硬编码路径不是一个合适的解决方案.使用this.getApplicationContext().getDir("databases",Context.MODE_PRIVATE).getPath(); 相反,如果/ data/data/路径随着一些新的API版本而改变,它仍然可以工作.

2> Lisarien..:

只是为了完成以前的回复,这些回复不允许在我的案例中解决问题.

我正在使用Android 4.1.1.我的应用程序在Webview中使用本地存储,我遇到了与原始问题相同的问题:本地存储工作正常,直到我杀死应用程序.在这种情况下,数据丢失了.

通过以前的回应激励我,尤其是@diyism,我能够解决我的问题:

String databasePath = this.getApplicationContext().getDir("databases", Context.MODE_PRIVATE).getPath();
settingsMenu.setDatabasePath(databasePath);

实际上,正如setDatabasePath()文档中所写:to function correctly, this method must be called with a path to which the application can write.



3> mr.boyfox..:

在API级别19中不推荐使用setDatabasePath()方法.我建议您使用这样的存储区域设置:

webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setDatabaseEnabled(true);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
    webView.getSettings().setDatabasePath("/data/data/" + webView.getContext().getPackageName() + "/databases/");
}

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有