Ich habe eine HTML5-Anwendung, die ich mit einem WebView umhüllen. Zum Speichern und Abrufen von Benutzereingabewerten zwischen Seiten verwende ich die localStorage html5-Funktion.localStorage html5 Funktion funktioniert nicht in WebView auf Samsung Android-Gerät
Es funktioniert gut auf meinem Nexus 4 (Android 4.4.4), aber es funktioniert nicht auf Samsung Galaxy Tab 2 (Android 4.3.x) (= nichts passiert, aber auch kein Fehler in logcat). Oder, um klarer zu sein: auf Samsung, es funktioniert nicht, wenn die HTML-Seiten aus dem Asset-Ordner der App geladen werden. Es funktioniert aber, wenn ich die Seiten auf einen Server setze, wie unten in der Outcomment-Zeile.
Allerdings, auf Nexus 4, Laden von Datei: /// android_asset/und auch wenn ich die Seiten auf einem Desktop-Browser (Chrome, Firefox) von file: // Pfad laden, es funktioniert auch.
Update 1: Ich hatte gerade einen anderen Benutzer, der das Problem mit einem LG-Gerät gemeldet, so dass es nicht scheint, Samsung spezifisch zu sein.
Update 2: Das Speichern und Laden des Werts von localStorage funktioniert auf allen Geräten auf derselben Seite, jedoch nicht zwischen verschiedenen Seiten. In meinem Beispiel kann ich den Wert auf 01_home.html speichern und abrufen, aber wenn ich auf eine andere Seite im Ordner android_asset gehe, kann ich es nicht mehr lesen (auf LG, Samsung-Geräten). Funktioniert aber gut auf Nexus 4.
Im Folgenden finden Sie die Einstellungen der Webansicht.
webView = (WebView)this.findViewById(R.id.webView);
webViewClient = new MyWebViewClient(this);
webViewClient.setSm(sm);
webView.setWebViewClient(webViewClient);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setPluginState(WebSettings.PluginState.ON);
webView.getSettings().setAppCacheEnabled(false);
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setBuiltInZoomControls(false);
webView.getSettings().setSupportZoom(false);
webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
webView.loadUrl("file:///android_asset/01_home.html"); // does NOT work!
// webView.loadUrl("http://192.168.178.33/01_home.html"); // does work!
Lokale Speicherung Code auf den Seiten:
// storing
var data = document.getElementById('data').value;
window.localStorage.setItem((1), data);
// reading
document.getElementById('data').value = window.localStorage.getItem(1);
Thema auf Android-Entwickler-Liste: https://groups.google.com/forum/#!topic/ android-developers/gssOdQLroAY –