Mi aplicación Android de HTML está perdiendo valores almacenados en localStorage cuando se cierra. ¿Alguien más ve este problema?

Tengo una aplicación nativa de Android 2.1 que hospeda una vista web. Cargo un sitio que contiene javascript que utiliza la función LocalStorage. Cuando se ejecuta la aplicación localStorage funciona correctamente. Cuando algunos usuarios salen de la aplicación y la reinician, todos los valores se han ido. No veo este problema en mi Motrola Droid o Sprint EVO, pero hay un informe de los usuarios en el campo con este problema.

¿Alguien sabe lo que me falta? Estoy estableciendo el siguiente indicador a true.

settings.setDomStorageEnabled(true); 

Para que el almacenamiento local funcione para su propio WebView en Android, debe asegurarse de que WebView utiliza el archivo correcto y el almacenamiento local está habilitado de la siguiente manera:

 String packageName = "com.dongshengcn.android"; WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); settings.setDatabaseEnabled(true); settings.setDatabasePath("/data/data/"+packageName+"/databases"); settings.setDomStorageEnabled(true); 

Donde "com.dongshengcn.android" debe ser reemplazado con su propio nombre androide pacakge app.

Sólo para completar las respuestas anteriores que no permiten resolver el problema en mi caso.

Estoy trabajando con Android 4.1.1. Mi aplicación utiliza el almacenamiento local dentro de una vista Web y estaba recibiendo el mismo problema que en la pregunta original: el almacenamiento local funciona bien hasta matar la aplicación. En este caso, los datos se perdieron.

Al inspirarme de respuestas anteriores, y especialmente de @diyism, pude resolver mi problema con esto:

 String databasePath = this.getApplicationContext().getDir("databases", Context.MODE_PRIVATE).getPath(); settingsMenu.setDatabasePath(databasePath); 

De hecho, como se escribe en la documentación setDatabasePath (): to function correctly, this method must be called with a path to which the application can write .

El método setDatabasePath () fue obsoleto en el nivel 19 de API. Le aconsejo que utilice el entorno de almacenamiento como este:

 webView.getSettings().setDomStorageEnabled(true); webView.getSettings().setDatabaseEnabled(true); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { webView.getSettings().setDatabasePath("/data/data/" + webView.getContext().getPackageName() + "/databases/"); } 

Sólo necesitan estas dos líneas:

 this.getSettings().setDomStorageEnabled(true); //enable to use "window.localStorage['my']='hello1'", in webview js on >= android 2.0 this.getSettings().setDatabasePath("/data/data/"+this.context.getPackageName()+"/databases/"); //if no set or wrong path, variables disappear on killed 
 // Confimed on android 2.1 emulator // enable javascript localStorage WebSettings webSettings = myWebView.getSettings(); webSettings.setDomStorageEnabled(true); // localStorage // eg if your package // package www.myapp.whatever; // eg webSettings.setDatabasePath("/data/data/www.myapp.whatever/databases/"); webSettings.setDatabasePath("/data/data/packagename/databases/"); 

esto funciona

  • Android Wikipedia La búsqueda de artículos no aparece correctamente en mi webview?
  • Android: "onBackPressed" sólo se llama desde la primera página de Cordova 3 webview, no se puede anular desde páginas interiores
  • Vista Web de Android
  • La vista web de Android shouldOverrideUrlLoading no se llama
  • Cómo conseguir la geolocalización que trabaja en la aplicación móvil titanium del appcelerator con el android webview
  • Webview dentro de RecyclerView está mostrando pantalla en blanco a veces en los dispositivos de turrón solamente
  • Inyectar CSS a un sitio con webview en android
  • Pantalla en blanco de Android en onBack en un archivo loadDataWithBaseURL
  • Cómo recuperar y modificar el contenido HTML de WebView con Http Post
  • ¿Cómo capturar esta excepción en la vista web de Android?
  • Android 7 WebView con wrap_content
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.