2012-02-25 11 views
5

Ho una semplice applicazione Android con una WebView. WebView è impostato per navigare in un sito che utilizza la funzione localStorage di JavaScript.Android - Lettura di dati HTML5 localStorage direttamente da Java

Ho già avuto il mio WebSettings impostato per consentire DomStorage:

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

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

cosa ho bisogno è un modo che il mio codice Java può leggere una variabile memorizzata utilizzando il meccanismo localStorage, vale a dire .:

JavaScript calcola questo:

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

Come posso leggere il valore di "nome" da localStorage dal codice Java?

risposta

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

Questo mi dà: "SecurityError Uncaught: Impossibile leggere il ' proprietà 'localStorage' da 'Finestra': Accesso negato per questo documento. " – Onheiron

+0

@Onheiron anch'io sto affrontando lo stesso problema. L'hai risolto? –

0

nella vostra attività

webView.addJavascriptInterface(myInterface, "JSInterface"); 

Javascript classe di interfaccia

class myInterface 
{ 

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

} 

in javascript

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

sì possibile leggere il valore localStorage in Java (Android).

utilizzare questo plug-in https://www.npmjs.com/package/cordova-plugin-nativestorage che utilizza l'archiviazione nativa.

-per che dobbiamo impostare il valore a Cordova

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

E In File Anroid Java per ottenere questo valore:

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