javascript - 使用对象参数将javascript代码绑定(bind)到android代码

标签 javascript android web-applications webview android-webview

如标题所示,我正在尝试将 javascript 代码绑定(bind)到我的 Android 应用程序,以便我可以在我的应用程序中对我的网站发送的事件/消息使用react。

看完官方android documentation与 javascript 绑定(bind)相关,我设法轻松实现了它。只要它是一个字符串。

什么工作正常? 我在我的应用程序中实现了以下代码:

/** Instantiate the interface and set the context  */
class ClientInterface(private val mContext: Context) {

    /** Show a toast from the web page  */
    @JavascriptInterface
    fun postMessage(message: String) {
        Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show()
    }
}

如果“postMessage”函数的参数是一个字符串,并且我从我的 javascript 中传递一个字符串作为参数,那么一切都很好。它正在传递字符串。 我的问题是我试图获取 JSONObject 而不是 String,但它不起作用。 我尝试转换所有我认为可能有用的东西.. JSONObject/JSONObject?/任何/任何?/对象/对象?等等..

当我在我的 javascript 上发送对象时,似乎没有任何效果。我在我的应用程序中得到的只是一个空响应。

有人试过类似的东西吗?我错过了什么?

P.S - 这是我的 javascript 代码以供引用:

var objectMessage = {
        type: "quote",
        code: "My name is Inigo Montoya. You killed my father, prepare to die!"
    }

window.CLIENT.postMessage(objectMessage);

最佳答案

你不能只传递原始对象! 所以你需要对你的对象进行字符串化。

var objectMessage = {
  type: "quote",
  code: "My name is Inigo Montoya. You killed my father, prepare to die!"
}

window.CLIENT.postMessage(JSON.stringify(objectMessage));

关于javascript - 使用对象参数将javascript代码绑定(bind)到android代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56631152/

相关文章:

javascript - 从移动目录获取图片比例

java - 如何将 Android 应用程序上传到市场?

java - 如何中断 Spring Web 流并清理资源

java - 您将 Web 应用程序的 native 库放在哪里(在 Caucho Resin 中)?

javascript - 将值传递给构造函数时使构造函数正常工作的问题

javascript - Array.map() 如何与 React 组件一起使用?

Javascript 对象上下文

android - 数据绑定(bind)注释处理器 kapt 警告

java - 有关GWT,Cookie和网页定向的问题

javascript - 哪个是定义函数的更好方法?