Tengo un problema con una vista web que puede acceder al almacenamiento local mediante una HTML5
aplicación. El archivo test.html me informa que mi navegador no admite el almacenamiento local (es decir, el webview
). Si tienes alguna sugerencia ...
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
fuente
fuente
El método setDatabasePath () quedó en desuso en el nivel 19 de API. Le recomiendo que use la configuración regional de almacenamiento de esta manera:
fuente
También tuve problemas con la pérdida de datos después de reiniciar la aplicación. Agregar esto ayudó:
fuente
Una solución que funciona en mi Android 4.2.2, compilada con el objetivo de compilación de Android 4.4W:
fuente
Si su aplicación usa múltiples vistas web, todavía tendrá problemas: localStorage no se comparte correctamente en todas las vistas web.
Si desea compartir los mismos datos en múltiples vistas web, la única forma es repararla con una base de datos java y una interfaz javascript.
Esta página en github muestra cómo hacer esto.
¡espero que esto ayude!
fuente
Si tiene varias vistas web, el almacenamiento local no funciona correctamente.
dos sugerencias:
fuente