localStorage html5-Funktion funktioniert in WebView auf Samsung-Android-Geräten nicht
Ich habe eine HTML5-Anwendung, die ich mit einem WebView einbinde. Zum Speichern und Abrufen von Benutzereingabewerten zwischen Seiten verwende ich daslokaler Speiche html5 Funktion.
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 es klarer zu machen:ei Samsung funktioniert es nicht, wenn die HTML-Seiten aus dem Asset-Ordner der App geladen werde. Es funktioniert jedoch, wenn ich die Seiten auf einen Server lege, wie unten in der Kommentarzeile angegeben.
Unter Nexus 4 funktioniert das Laden jedoch auch aus der Datei: /// android_asset / und wenn ich die Seiten in einem Desktop-Browser (Chrome, Firefox) aus der Datei: // path lade, funktioniert es auch.
Update 1: Ich hatte gerade einen anderen Benutzer, der das Problem mit einem LG-Gerät gemeldet hat. Es scheint also nicht 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 in 01_home.html speichern und abrufen. Wenn ich jedoch zu einer anderen Seite im Ordner android_asset gehe, kann ich ihn nicht mehr lesen (auf LG- und Samsung-Geräten). Funktioniert aber gut auf Nexus 4.
Niedrig sind 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!
Lokaler Speichercode auf den Seiten:
// storing
var data = document.getElementById('data').value;
window.localStorage.setItem((1), data);
// reading
document.getElementById('data').value = window.localStorage.getItem(1);