Ich habe ein Problem mit einer Webansicht, die möglicherweise über eine HTML5
App auf den localStorage zugreift . Die Datei test.html informiert mich darüber, dass der lokale Speicher von meinem Browser (dh dem webview
) nicht unterstützt wird. Wenn Sie einen Vorschlag haben ..
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;
}
}
}
android
html
webview
local-storage
Thomas
quelle
quelle
Die Methode setDatabasePath () wurde in API-Ebene 19 nicht mehr unterstützt. Ich empfehle Ihnen, das Speichergebietsschema wie folgt zu verwenden:
quelle
Ich hatte auch Probleme mit Datenverlust nach dem Neustart der Anwendung. Das Hinzufügen hat geholfen:
quelle
Eine Lösung, die auf meinem Android 4.2.2 funktioniert und mit dem Build-Ziel Android 4.4W kompiliert wurde:
quelle
Wenn Ihre App mehrere Webansichten verwendet, treten weiterhin Probleme auf: localStorage wird nicht in allen Webansichten korrekt freigegeben.
Wenn Sie dieselben Daten in mehreren Webansichten freigeben möchten, können Sie sie nur mit einer Java-Datenbank und einer Javascript-Oberfläche reparieren.
Diese Seite auf Github zeigt, wie das geht.
Ich hoffe das hilft!
quelle
Wenn Sie mehrere Webansichten haben, funktioniert localstorage nicht richtig.
zwei Vorschläge:
quelle