2012-02-25 45 views
5

Tengo una aplicación sencilla de Android que tiene una WebView. WebView está configurado para navegar a un sitio que usa la función localStorage de JavaScript.Android - Lectura de datos localStorage HTML5 directamente desde Java

He conseguido ya mis WebSettings establece para permitir DomStorage:

webSettings.setJavaScriptEnabled(true); 
ebSettings.setDomStorageEnabled(true); 

String dbPath = this.getApplicationContext().getDir("database", MODE_PRIVATE).getPath();   
webSettings.setDatabasePath(dbPath); 

Lo que necesito es una manera de que mi código Java puede leer una variable almacenada utilizando el mecanismo de almacenamiento local, es decir .:

JavaScript hace esto:

var storage = window.localStorage; 
    storage.setItem("name", "Hello World!"); 

¿Cómo puedo leer el valor de "name" from localStorage from Java code?

Respuesta

0
yourWebView.setWebChromeClient(new WebChromeClient(){ 
     public boolean onJsAlert(WebView view, String url, String message, JsResult result) { 
     Log.d(tag, "That's my local storage value =" + message); 
     return false; 
     }; 
    }); 
(...) 
    yourWebView.loadURL("javascript:alert(localStorage.getItem(\"name\"))"); 
+0

Esto me da: "SecurityError no detectada: No se pudo leer la ' propiedad localStorage 'desde' Ventana ': acceso denegado para este documento. " – Onheiron

+0

@Onheiron También estoy enfrentando el mismo problema. ¿Lo has resuelto? –

0

en su actividad

webView.addJavascriptInterface(myInterface, "JSInterface"); 

Javascript clase de interfaz

class myInterface 
{ 

    @JavascriptInterface 
    public void getVariable(string fromLocalStorage) 
    { 
    //your code 
    } 

} 

en javascript

window.JSInterface.getVariable(localStorage.getItem("variableName")) 
1

sí posible leer el valor localStorage en Java (Android).

utilice este complemento https://www.npmjs.com/package/cordova-plugin-nativestorage que utilizan almacenamiento nativo.

-para que tenemos que establecer el valor en Córdoba

NativeStorage.setItem("reference", obj, setSuccess, setError); 
    function setSuccess(obj){ 
    } 
    function setError(obj){ 
    } 

Y De Archivo Anroid Java para obtener este valor:

SharedPreferences sharedPreferences = getSharedPreferences("MainActivity", MODE_PRIVATE); 
    System.out.println("********--------- shared pref values... " + sharedPreferences.getString("myid", "no value")); 
Cuestiones relacionadas