在 Android 上使用 addJavascriptInterface() 传递 JavaScript 对象

2022-09-01 00:57:25

是否可以使用 addJavascriptInterface() 将 JavaScript 对象从 JavaScript 传递到 Java?类似如下的内容:

var javaScriptObject = {"field1":"string1", "field2":"string2"};
JavaScriptInterface.passObject(javaScriptObject);

如何在Java端捕获这样的调用?我设置接口以发送字符串没有问题,但是当我发送对象时,我在Java端收到空值。


答案 1

AFAIK,仅适用于基元类型和字符串,因此您无法传递任意Javascript对象。addJavascriptInterface()


答案 2

这就是我的工作方式...

在安卓系统中...

@JavascriptInterface
public void getJSONTData(String jsonData) {
      try {
             JSONObject data = new JSONObject(jsonData); //Convert from string to object, can also use JSONArray
          } catch (Exception ex) {}
}

在 JavaScript 中...

var obj = { Name : 'Tejasvi', Age: 100};
var str = JSON.stringify(obj);
Android.getJSONTData(str);

截至目前,我找不到任何其他正确的方法将本机JavaScript对象直接传递给JavascriptInterface。

在 中调用结果(如果参数类型为)或(如果参数类型定义为)Android.getJSONTData({ Name : 'Tejasvi', Age: 100})nullObjectundefinedStringgetJSONTData