2010-11-11 16 views
23

Me enfrenta un gran problema el desarrollo de una aplicación de Android que utiliza una vista web para mostrar los datos. La página web que estoy usando en el vistaweb utilizar localStorage API de HTML 5.Android - Hacer WebSite DomStorage persistente después de la aplicación cerrada

Para activar esta función He puesto el escenario como este vistas web:

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

Así que los trabajos de la API localStorage pero cuando cierro la aplicación (y matar el proceso), localStorage se borra completamente y cuando lo vuelvo a cargar, todos mis datos se pierden.

Mi pregunta es simple: ¿Cómo hacer que DomStorage de una Webview sea persistente incluso cuando cerramos la aplicación?

Gracias por todas sus futuras respuestas.

+2

que he encontrado la solución, es necesario establecer el de databasePath el fin de ahorrar datas más:. webview.getSettings() setDatabasePath(); – jimroot25

+1

¿se puede compartir lo el camino que se estableció? Estoy preguntando g el mismo problema ahora. – dongshengcn

+0

¿mi respuesta resolvió tu problema? – Panthro

Respuesta

10

¿Ha establecido el Database Path? Android no sabe dónde guardar el DOMDatabase por defecto, si no se establece que llamar

+1

tenga en cuenta que solo puede llamar a la ruta de acceso setDatabase una vez; las llamadas subsiguientes se ignoran. Debe finalizar la aplicación para forzar la recarga de WebKit (la invocación de Activity.finish() no le garantizará esto) antes de que cualquier llamada subsiguiente tome efecto – gheese

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

qué ocurre en andorid 2.2, si funciona o no, porque para mí en 2.1 funciona pero no en 2.2 – Karthi

+0

Si tiene el error "setDatabasePath obsoleto" con este uso, en cromo navegador webkit maneja la ruta en sí. [Vea esta respuesta para más información] (http://stackoverflow.com/questions/21319279/android-webview-setdatabasepath-deprecated) –

6

debe habilitar la base de datos, así como el establecimiento de su trayectoria:

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

la primera línea me atrapó a cabo durante bastante tiempo ...

0

el post anterior es la mezcla de dos conceptos diferentes:

Para hacer que sus datos persistan después de cerrar la sesión, asegúrese de que no está utilizando (en su javascript) sessionStorage

DOMStorage y el almacenamiento de la base de datos son dos cosas diferentes. El almacenamiento de la base de datos no es parte de HTML5: http://www.tutorialspoint.com/html5/html5_web_sql.htm

DOMStorage está más relacionado con HTML5 e incluye el almacenamiento de la sesión, que, por diseño, desaparecerá cuando cierre el navegador. Encontrará más golpes a través de la búsqueda "almacenamiento local' que 'el almacenamiento DOM'

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

Por lo tanto, para permitir DOMstorage sólo tiene la siguiente:. webSettings.setDomStorageEnabled (true);

Cuestiones relacionadas