Webview Android & localStorage
J'ai un problème avec une webview qui peut accéder à la localStorage par un HTML5
app. L'test.html fichier m'informe que local
le stockage n'est pas pris en charge par mon navigateur (ie. le webview
). Si vous avez des suggestion..
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;
}
}
}
Vous devez vous connecter pour publier un commentaire.
Le suivant est manquant:
setDatabasePath() méthode est dépréciée de l'API de niveau 19. Je vous conseille d'utiliser le stockage de paramètres régionaux comme ceci:
J'ai aussi eu de problème avec la perte des données après l'application est redémarrée.
L'ajout de cette aidé:
Une solution qui fonctionne sur mon Android 4.2.2, compilé avec la version cible Android 4.4 W:
Si votre application utilisation de plusieurs webview vous allez encore avoir des ennuis : localStorage est pas correctement partagé sur l'ensemble des webviews.
Si vous souhaitez partager les mêmes données dans plusieurs webviews le seul moyen est de le réparer avec une base de données java et javascript interface.
Cette page sur github montre comment faire.
espérons que cette aide!
si vous avez plusieurs webview, localstorage ne fonctionne pas correctement.
deux suggestion: