Android - Making Webview DomStorage persistant aft

2019-01-11 03:06发布

I'm facing a huge problem developing an Android app which use a Webview to display datas. The website i'm using in the webview use localStorage API of HTML 5.

To enable this feature i've set the webview setting like this :

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

So the localStorage API works but when I close the app (and kill the process), localStorage is completly erased and when I reload it, all my datas are lost.

My question is simple : How to make DomStorage of a Webview persistant even when we close the app ?

Thank you for all you future answers.

5条回答
Explosion°爆炸
2楼-- · 2019-01-11 03:43

This issue was answered in this post with an update for Android v4.1.1.

查看更多
劳资没心,怎么记你
3楼-- · 2019-01-11 03:45

You must enable the database as well as setting its path:

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

The first line caught me out for quite a while...

查看更多
女痞
4楼-- · 2019-01-11 03:47

The above post is mixing two diferent concepts:

To make your data persist after the session is closed make sure you are not using (on your javascript) sessionStorage

DOMStorage and database storage are two different things. Database storage is not part of HTML5: http://www.tutorialspoint.com/html5/html5_web_sql.htm

DOMStorage is more related to HTML5 and includes session storage, which -by design- will disappear when you close your browser. You will find more hits via searching "local storage' that 'DOM storage'.

http://viralpatel.net/blogs/introduction-html5-domstorage-api-example/

Thus, to enable DOMstorage you just need this: webSettings.setDomStorageEnabled(true);

查看更多
叛逆
5楼-- · 2019-01-11 04:00
// 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/");
查看更多
来,给爷笑一个
6楼-- · 2019-01-11 04:07

Did you set the DatabasePath? Android doesn't know where to save the DOMDatabase by default, if you don't set it calling

webview.getSettings().setDatabasePath()
查看更多
登录 后发表回答