2010-11-11 47 views
23

我正在開發一個使用Webview顯示數據的Android應用程序,面臨着巨大的問題。我使用的網頁流量的網站上使用HTML 5的localStorage APIAndroid - 使應用程序關閉後Webview DomStorage持久性

要啓用這個功能我設置web視圖設置是這樣的:

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

所以localStorage的API的工作,但是當我關閉應用程序(並殺死進程),localStorage完全擦除,當我重新加載它時,我的所有數據都丟失了。

我的問題很簡單:即使我們關閉應用程序,如何使Web視圖的DomStorage持續存在?

謝謝你所有未來的答案。

+2

我已經找到了解決方案,您需要設置databasePath爲了節省DATAS: webview.getSettings()setDatabasePath(); – jimroot25 2010-11-12 15:21:17

+1

你可以分享你設定的路徑?我是facin克現在相同的問題。 – dongshengcn 2011-02-16 17:23:43

+0

我的答案是否解決了您的問題? – Panthro 2011-06-14 16:37:25

回答

10

您是否設置了DatabasePath? Android不知道在哪裏默認保存DOMDatabase,如果你不把它叫

+1

請注意,您只能調用一次setDatabase路徑 - 後續調用將被忽略。你需要終止應用程序來強制WebKit重新加載(調用Activity.finish()不會保證這一點)在任何後續調用產生影響之前 – gheese 2012-09-13 07:09:51

9
// 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/"); 
+0

在andorid 2.2中,無論其工作與否,因爲對於我2.1中的工作而言不在2.2中 – Karthi 2011-10-12 06:37:48

+0

如果您在此使用中出現「setDatabasePath deprecated」錯誤,那麼在Chrome中,webkit瀏覽器處理路徑本身。 [看到這個答案更多](http://stackoverflow.com/questions/21319279/android-webview-setdatabasepath-deprecated) – 2016-01-06 00:01:21

6

您必須啓用數據庫以及設置它的路徑:

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

第一行抓住我了好一陣子......

0

上述職位混合兩種diferent概念:

要在會話關閉後讓數據保持不變,請確保您沒有使用(在您的javascript上)sessionStorage

DOMStorage和數據庫存儲是兩回事。數據庫存儲不是HTML5的一部分:http://www.tutorialspoint.com/html5/html5_web_sql.htm

DOMStorage與HTML5更相關,並且包含會話存儲,當您關閉瀏覽器時,設計將會消失。您將通過搜索「本地存儲」說‘DOM存儲’找到更多的點擊

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

因此,爲了使DOMstorage你只需要這樣: webSettings.setDomStorageEnabled(真);

相關問題