我为 Android 开发了一个 PhoneGap 应用程序。该应用程序由webapp (HTML/jQuery) 和由 webapp 启动的后台服务(Java 代码)组成。
这个 webapp 写到window.localStorage就像
<script>
window.localStorage.setItem("name","MyName");
</script>
是否可以从我的 Java 代码中读取 localStorage 中的这个名称?
我为 Android 开发了一个 PhoneGap 应用程序。该应用程序由webapp (HTML/jQuery) 和由 webapp 启动的后台服务(Java 代码)组成。
这个 webapp 写到window.localStorage就像
<script>
window.localStorage.setItem("name","MyName");
</script>
是否可以从我的 Java 代码中读取 localStorage 中的这个名称?
这个有可能。要执行 JavaScript 并获得响应,您可以执行以下操作:
在代码中定义 JavaScript 回调接口:
class MyJavaScriptInterface {
public void someCallback(String jsResult) {
// this will be passed the local storage name variable
}
}
将此回调附加到您的 WebView:
MyJavaScriptInterface javaInterface = new MyJavaScriptInterface();
webView.addJavascriptInterface(javaInterface, "HTMLOUT");
从脚本运行 JavaScript 调用 window.HTMLOUT.someCallback:
webView.loadUrl("javascript:( function () { var name = window.localStorage['name']; window.HTMLOUT.someCallback(name); } ) ()");
注意 -window.localStorage['name']
与window.localStorage.getItem('name')
您可能需要使用super.webView.addJavascriptInterface
或super.addJavascriptInterface
添加接口。您可能需要使用super.webView.loadUrl
或super.loadUrl
调用它。这一切都取决于你将从哪里调用这些。
使用 cordova-plugin-nativestorage 插件读取 android java 文件中的 localstorage。
适用于 IOS、Android 平台
这个插件使用 nativeStorage
科尔多瓦语法:
NativeStorage.setItem("reference", obj, setSuccess, setError);
function setSuccess(obj){
}
function setError(obj){
}
安卓 JAVA:
SharedPreferences sharedPreferences = getSharedPreferences("MainActivity", MODE_PRIVATE);
System.out.println("********--------- shared pref values... " + sharedPreferences.getString("myid", "no value"));