6

我为 Android 开发了一个 PhoneGap 应用程序。该应用程序由webapp (HTML/jQuery) 和由 webapp 启动的后台服务(Java 代码)组成。

这个 webapp 写到window.localStorage就像

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

是否可以从我的 Java 代码中读取 localStorage 中的这个名称?

4

2 回答 2

8

这个有可能。要执行 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')

这篇关于stackoverflow的帖子帮助了我

您可能需要使用super.webView.addJavascriptInterfacesuper.addJavascriptInterface添加接口。您可能需要使用super.webView.loadUrlsuper.loadUrl调用它。这一切都取决于你将从哪里调用这些。

于 2013-08-13T18:13:03.007 回答
3

使用 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"));
于 2016-08-26T07:22:56.360 回答