Vista web de Android y localStorage

Tengo un problema con una webview que puede tener acceso a la localStorage mediante una aplicación HTML5. El archivo test.html me informa que el almacenamiento local no es compatible con mi navegador (por ejemplo, la webview). Si tiene alguna sugerencia .. Eche un vistazo a mi código:

package com.test.HelloWebView; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebStorage; import android.webkit.WebView; import android.webkit.WebViewClient; public class HelloWebView extends Activity { WebView webview; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); webview = (WebView) findViewById(R.id.webview); webview.getSettings().setJavaScriptEnabled(true); webview.setWebViewClient(new HelloWebViewClient()); webview.loadUrl("file:///android_asset/test.html"); WebSettings settings = webview.getSettings(); settings.setJavaScriptEnabled(true); settings.setDatabaseEnabled(true); String databasePath = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath(); settings.setDatabasePath(databasePath); webview.setWebChromeClient(new WebChromeClient() { public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize, long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) { quotaUpdater.updateQuota(5 * 1024 * 1024); } }); } public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { webview.goBack(); return true; } return super.onKeyDown(keyCode, event); } private class HelloWebViewClient extends WebViewClient { public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } } } 

Gracias, Thomas.

Faltaba lo siguiente:

 settings.setDomStorageEnabled(true); 

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/"); } 

También he tenido problemas con los datos que se pierden después de reiniciar la aplicación. Añadir esto ayudó:

 webView.getSettings().setDatabasePath("/data/data/" + webView.getContext().getPackageName() + "/databases/"); 

Una solución que funciona en mi Android 4.2.2, compilado con la meta de compilación Android 4.4W:

 WebSettings settings = webView.getSettings(); settings.setDomStorageEnabled(true); settings.setDatabaseEnabled(true); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { File databasePath = getDatabasePath("yourDbName"); settings.setDatabasePath(databasePath.getPath()); } 

Si tu aplicación utiliza varias vistas web, aún tendrás problemas: localStorage no se comparte correctamente en todas las webviews.

Si desea compartir los mismos datos en varias vistas web, la única manera es repararla con una base de datos java y una interfaz javascript.

Esta página en github muestra cómo hacerlo.

¡espero que esto ayude!

Si tiene varias vistas web, localstorage no funciona correctamente.
Dos sugerencia:

  1. Utilizando la base de datos de java en lugar de webview localstorage que "@Guillaume Gendre" explicado (por supuesto, no funciona para mí)
  2. El trabajo de almacenamiento local como json, por lo que los valores de almacenamiento como "clave: valor". Usted puede agregar su identificador único navegador a su clave y el uso normal de android localstorage
  • DequeueBuffer: no se puede eliminar varios buffers sin establecer el contador de búfer
  • La vista Web de Android da el mensaje net :: ERR_CACHE_MISS
  • Mostrar círculo de actividades antes de cargar la vista web - Android
  • Superposición blanca en WebView después de la actualización a AppCompat con Xamarin Forms
  • Menú contextual en Android WebView
  • Cómo poblar webview en android con texto sin formato de base de datos y ser capaz de manejar caracteres de nueva línea
  • Fuga de memoria de WebView de Android al utilizar activos
  • Interceptar solicitud de fuente de video HTML5 en Android WebView
  • Android webview y loadData, ¿puedo obtener el botón de regreso para volver al contenido generado?
  • Entrada de archivo HTML en android webview (android 4.4, kitkat)
  • Flash no se muestra en WebView para Android 3.0.1
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.