2013-08-13 39 views
6

Tôi đã phát triển một ứng dụng PhoneGap cho Android. Ứng dụng được sáng tác bởi ứng dụng web (HTML/jQuery) và dịch vụ nền (mã Java) do ứng dụng web khởi động.Dịch vụ Android đọc localStorage?

webapp này ghi vào window.localStorage như

<script> 
     window.localStorage.setItem("name","MyName"); 
    </script> 

Có thể đọc tên đó là trong localStorage từ mã Java của tôi?

Trả lời

8

Điều này là có thể. Để thực thi JavaScript và nhận được trả lời, bạn có thể làm như sau:

Xác định giao diện callback JavaScript trong mã của bạn:

class MyJavaScriptInterface { 
    public void someCallback(String jsResult) { 
     // this will be passed the local storage name variable 
    } 
} 

Đính kèm callback này để WebView của bạn:

MyJavaScriptInterface javaInterface = new MyJavaScriptInterface(); 
webView.addJavascriptInterface(javaInterface, "HTMLOUT"); 

Chạy cửa sổ gọi JavaScript của bạn .HTMLOUT.someCallback từ tập lệnh:

webView.loadUrl("javascript:(function() { var name = window.localStorage['name']; window.HTMLOUT.someCallback(name); })()"); 

Lưu ý - window.localStorage['name'] cũng giống như window.localStorage.getItem('name')

This post here on stackoverflow helped me

Bạn có thể cần phải sử dụng super.webView.addJavascriptInterface hoặc super.addJavascriptInterface để thêm giao diện. Bạn có thể cần sử dụng super.webView.loadUrl hoặc super.loadUrl để gọi điều này. Tất cả phụ thuộc vào nơi bạn sẽ gọi chúng từ đó.

+1

Xin chào @Ross! Cảm ơn bạn đã trả lời! – Saxophonist

+0

@Evandro Xin chào, tôi rất vui vì tôi có thể giúp đỡ. – Ross

+0

@Ross Tôi biết đây là chủ đề cũ, nhưng bạn có thể chỉ cho tôi một repo có phương pháp này được triển khai đầy đủ trong plugin Cordova không? Tôi đang cố gắng sửa đổi Plugin thiết bị Cordova để sử dụng mã này nhưng tôi vẫn gặp lỗi. Tôi biết hầu như không có Java. Tôi rất thích nhìn thấy một ví dụ làm việc của mã này. : D –

2

Sử dụng plugin cordova-plugin-nativestorage để đọc localstorage trong tệp java android.

nó cho IOS, Android plateform

plugin này sử dụng nativeStorage

Cordova Cú pháp:

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

Anroid JAVA:

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