Android Service reads localStorage?
android, cordova, java, local-storage
Solution
This is possible. To execute JavaScript and get response you can do as follows:
Define JavaScript callback interface in your code:
class MyJavaScriptInterface {
public void someCallback(String jsResult) {
// this will be passed the local storage name variable
}
}
Attach this callback to your WebView:
MyJavaScriptInterface javaInterface = new MyJavaScriptInterface();
webView.addJavascriptInterface(javaInterface, "HTMLOUT");
Run your JavaScript calling window.HTMLOUT.someCallback from the script:
webView.loadUrl("javascript:( function () { var name = window.localStorage['name']; window.HTMLOUT.someCallback(name); } ) ()");
Note - `window.localStorage['name']` is the same as `window.localStorage.getItem('name')`
This post here on stackoverflow helped me
You might need to use `super.webView.addJavascriptInterface` or `super.addJavascriptInterface` to add the interface. You might need to use `super.webView.loadUrl` or `super.loadUrl` to invoke this. It all depends on where you are going to be calling these from.
Problem
I have developed a PhoneGap application for Android. The application is composed by the webapp (HTML/jQuery) and a background service (Java code) that's started by the webapp. This webapp writes to window.localStorage like ``` <script> window.localStorage.setItem("name","MyName"); </script> ``` Is it possible to read this name that is in the localStorage from my Java code?