我正在尝试Android代码:我想使用HTML 5本地存储存储一个值。在本练习中,我使用的页面就像这个一样简单: http://www.w3schools.com/html5/tryit.asp?filename=tryhtml5_webstorage_local_clickcount
我的清单确实允许我上网,它是7的min-sdk。
这是我的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());
}
我的问题是,当我关闭应用时,本地存储的值不再存在。我可以使用默认浏览器浏览到同一页面,即使关闭模拟器后该值也是持久的,这正是我正在寻找的行为。
这可能是一件非常简单的事......任何想法?
答案 0 :(得分:7)
看来空字符串DatabasePath就是问题所在。我尝试了类似的代码并使用空字符串路径,在应用程序退出后该值不会保留。如果我定义了特定的数据库路径,则该值将按预期保持不变。
尝试:
webSettings.setDatabasePath("/data/data/"+this.getPackageName()+"/databases/");
答案 1 :(得分:2)
如果您的应用使用多个网页浏览,您仍然会遇到麻烦:在所有网络视图中都没有正确分享localStorage。
如果您想在多个网页浏览中共享相同的数据,唯一的方法是使用java数据库和javascript界面进行修复。
github上的This page显示了如何执行此操作。
希望这有帮助!答案 2 :(得分:1)
无法让它在所有设备上运行(尤其是使用ICS) - 即使使用数据库路径,启用DOMStorage等 - 使用cookie代替帮助我。