J'ai un problème avec une vue Web qui peut accéder au localStorage par une HTML5
application. Le fichier test.html m'informe que le stockage local n'est pas pris en charge par mon navigateur (c'est-à-dire le webview
). Si vous avez des suggestions ..
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
la source
la source
La méthode setDatabasePath () a été déconseillée au niveau de l'API 19. Je vous conseille d'utiliser les paramètres régionaux de stockage comme ceci:
la source
J'ai également eu un problème avec la perte de données après le redémarrage de l'application. L'ajout de cela a aidé:
la source
Une solution qui fonctionne sur mon Android 4.2.2, compilée avec la cible de build Android 4.4W:
la source
Si votre application utilise plusieurs vues Web, vous aurez toujours des problèmes: localStorage n'est pas correctement partagé dans toutes les vues Web.
Si vous souhaitez partager les mêmes données dans plusieurs vues Web, la seule façon est de les réparer avec une base de données java et une interface javascript.
Cette page sur github montre comment procéder.
j'espère que cette aide!
la source
si vous avez plusieurs vues Web, le stockage local ne fonctionne pas correctement.
deux suggestions:
la source