Android - 将 JSON 对象从 webview javascript 传递到 java

Posted

技术标签:

【中文标题】Android - 将 JSON 对象从 webview javascript 传递到 java【英文标题】:Android - Passing JSON object from webview javascript to java 【发布时间】:2014-03-28 10:35:29 【问题描述】:

我在 java 端有一个带有 webview 和 javascript 接口的 Activity。我想用 Java 编写一个可以接受来自 webview 的 json 参数的方法。

@JavascriptInterface
public String test(Object data) 
    Log.d("TEST", "data = " + data);

在我的 webview javascript 上我调用:

MyAPI.test( a: 1, b: 2 );

但数据变量为空。

如何将 JSON 对象从 webview javascript 传递到本机方法?

谢谢

【问题讨论】:

你只能传递字符串和原语。 【参考方案1】:

@njzk2 是对的,这样做:

在 JAVA 中:

@JavascriptInterface
public String test(String data) 
   Log.d("TEST", "data = " + data);
   return "this is just a test";

在 JS 中:

// some code 
var result = test(" a: 1, b: 2 ");
alert(result);
//some code

function test(args) 
   if (typeof android != "undefined") // check the bridge 
      if (Android.test!= "undefined")  // check the method
         Android.test(args);
      
   

【讨论】:

【参考方案2】:

您可以使用 GSON 库或类似的库来创建字符串化 JSON 到 Java 对象,并在 JS 端使用 JSON.Stringify(data)

【讨论】:

以上是关于Android - 将 JSON 对象从 webview javascript 传递到 java的主要内容,如果未能解决你的问题,请参考以下文章

如何从android中的json对象呈现和选择联系人?

如何将json从android发送到php?

是否有任何用于将 JSON 对象传递给 android 的 PHP 配置?

Android Room:将 json 结果转换为 db 对象的有效方法

如何从android中的url获取json对象

从 Android 向 Laravel 发送 JSON