java在Android上使用addJavascriptInterface()传递JavaScript对象
是否可以使用addJavascriptInterface()将JavaScript对象从JavaScript传递到Java?大致如下:
var javaScriptObject = {"field1":"string1", "field2":"string2"};
JavaScriptInterface.passObject(javaScriptObject);
Java端如何捕获这样的调用?我在设置接口以发送字符串方面没有问题,但是当我发送一个对象时,我在Java端接收null
# 1 楼答案
我找到了一个解决方案,使用JSON。我的Java方法返回一个JSONArray,在我的javascript代码中,我收到它并使用JSON将其转换为javascript向量。parse()。请参见示例:
爪哇:
现在是javascript代码:
上面的注释代码显示了静态时的情况,现在数据来自Java代码
这是安卓2.1和3.2上的测试
# 2 楼答案
我认为您还可以传递JSONObject和JSONArray。因此,不仅是基元类型,还包括存储在javascript数组[0,1,2]或字典{one:1,two:2}中的基元类型
我没有在代码中验证,只是阅读文档。可能很快就要用了
# 3 楼答案
您不能传递JSONObject或JSONArray,但可以使用该表单发送字符串并将其解析为这些类型
您可以选择使用字符串公开方法,然后使用JSONObject或JSONArray解析字符串并相应地使用它
这就是我所做的
其中数组是“[“string1”,“string2”]”,jsonObj是“{attr:1,attr2:“myName”}”
# 4 楼答案
当然,
addJavascriptInterface()
只适用于基本类型和字符串,因此不能传递任意Javascript对象# 5 楼答案
我就是这样做的
在Android中
在JavaScript中
到目前为止,我找不到任何其他合适的方法将本机JavaScript对象直接传递给JavascriptInterface
调用
Android.getJSONTData({ Name : 'Tejasvi', Age: 100})
会导致null
(如果参数类型为Object
)或undefined
(如果参数类型定义为String
)出现在getJSONTData
中# 6 楼答案
我可以运行此功能
在Javascript中:
在Android中:
祝你好运