5

我正在尝试使用 Android 代码:我想使用 HTML 5 本地存储来存储一个值。在这个练习中,我使用了一个和这个一样简单的页面: http ://www.w3schools.com/html5/tryit.asp?filename=tryhtml5_webstorage_local_clickcount

我的清单确实允许我上网,它的 min-sdk 为 7。

这是我的java代码:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    webview = (WebView) findViewById(R.id.webview);
    WebView webView = (WebView) findViewById(R.id.webview);
    webView.addJavascriptInterface(new JavaScriptInterface(this), "Android");
    WebSettings webSettings = webview.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setDatabasePath("");
    webSettings.setDomStorageEnabled(true);
    webview.setWebChromeClient(new WebChromeClient());
    webview.loadUrl("http://www.xyz.com/test.html");
    ///xyz.com/test.html is a sample  :)
    webview.setWebViewClient(new HelloWebViewClient());
}

我的问题是当我关闭应用程序时,本地存储的值不再存在。我可以使用默认浏览器浏览到同一页面,并且即使在关闭模拟器后该值也是持久的,这正是我正在寻找的行为。

这可能是一件非常简单的事情……有什么想法吗?

4

3 回答 3

7

看来空字符串 DatabasePath 是问题所在。我尝试了类似的代码并且使用空字符串路径,应用程序退出后该值不会持续存在。如果我定义了一个特定的数据库路径,该值将按预期保留。

尝试:

webSettings.setDatabasePath("/data/data/"+this.getPackageName()+"/databases/");
于 2012-05-11T19:59:20.627 回答
2

如果您的应用程序使用多个 webview,您仍然会遇到麻烦:localStorage 未在所有 webview 之间正确共享。

如果您想在多个 web 视图中共享相同的数据,唯一的方法是使用 java 数据库和 javascript 接口修复它。

github上的这个页面显示了如何做到这一点。

希望这有帮助!

于 2013-08-13T15:59:29.053 回答
1

无法让它在所有设备上运行(尤其是使用 ICS)——即使使用数据库路径、启用 DOMStorage 等——使用 cookie 反而帮助了我。

于 2012-07-10T08:57:56.110 回答