我有一个托管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名称.
要使本地存储在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名称.
只是为了完成以前的回复,这些回复不允许在我的案例中解决问题.
我正在使用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
.
在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/"); }