2012-02-25 19 views
5

Mam prostą aplikację na Androida, która ma WebView. WebView jest skonfigurowany do przeglądania witryny, która wykorzystuje funkcję localStorage JavaScript.Android - Odczytywanie danych lokalnych HTML5 z Javy

Mam już moje WebSettings ustawić, aby umożliwić DomStorage:

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

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

Co potrzebne jest sposób, że mój kod Java może odczytać zmienną zapisany przy użyciu mechanizmu localStorage, tj .:

JavaScript to robi:

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

Jak mogę odczytać wartość "name" z localStorage z kodu Java?

Odpowiedz

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

To daje mi: „Uncaught SecurityError: failed czytać" Właściwość localStorage z 'Window': Odmowa dostępu dla tego dokumentu. " – Onheiron

+0

@Oniron Mam także do czynienia z tym samym problemem. Rozwiązałeś to? –

0

w swojej działalności

webView.addJavascriptInterface(myInterface, "JSInterface"); 

Javascript klasy interfejs

class myInterface 
{ 

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

} 

w javascript

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

tak można odczytać wartość localStorage w Java (Android).

użyj tej wtyczki https://www.npmjs.com/package/cordova-plugin-nativestorage , która używa pamięci natywnej.

-dla że musimy ustawić wartość w Cordova

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

A w pliku Anroid Java, aby uzyskać tę wartość:

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