2012-02-25 35 views
5

Tôi có một ứng dụng Android đơn giản có WebView. WebView được đặt để duyệt đến một trang web sử dụng tính năng localStorage của JavaScript.Android - Đọc dữ liệu HTML5 localStorage trực tiếp từ Java

Tôi đã bị WebSettings tôi thiết lập để cho phép DomStorage:

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

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

Những gì tôi cần một cách mà mã Java của tôi có thể đọc một biến lưu trữ bằng cách sử dụng cơ chế localStorage, tức là .:

là JavaScript thực hiện điều này:

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

Làm cách nào để đọc giá trị của "tên" từ localStorage từ mã Java?

Trả lời

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

này mang lại cho tôi: "SecurityError chưa gặp: Không đọc được ' localStorage 'tài sản từ' Window ': Truy cập bị từ chối cho tài liệu này. " – Onheiron

+0

@Onheiron Tôi cũng đang gặp phải vấn đề tương tự. Bạn đã giải quyết nó chưa? –

0

trong hoạt động của bạn

webView.addJavascriptInterface(myInterface, "JSInterface"); 

Javascript giao diện lớp

class myInterface 
{ 

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

} 

trong javascript

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

có thể đọc giá trị localStorage trong java (Android).

sử dụng plugin này https://www.npmjs.com/package/cordova-plugin-nativestorage sử dụng bộ nhớ gốc.

-ví rằng chúng ta phải thiết lập giá trị trong cordova

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

Và Trong Anroid Java File để nhận được giá trị này:

SharedPreferences sharedPreferences = getSharedPreferences("MainActivity", MODE_PRIVATE); 
    System.out.println("********--------- shared pref values... " + sharedPreferences.getString("myid", "no value")); 
Các vấn đề liên quan