【发布时间】:2019-10-31 00:54:43
【问题描述】:
正如标题所示,我正在尝试将 javascript 代码绑定到我的 android 应用程序,以便我可以在我的应用程序中对我的网站发送的事件/消息做出反应。
在阅读了与javascript绑定相关的官方android documentation之后,我设法轻松实现它..只要它是一个字符串。
什么工作正常? 我在我的应用中实现了以下代码:
/** 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);
【问题讨论】:
-
尝试使用 JSON.stringify(obj) 从 javascript 返回 Json 对象;并将其作为字符串接收到您的 Android 代码中,然后将其解析为您的对象。
-
你在webview中注册ClientInterface类为JSInterface了吗?
-
@TheDude 是的。我做到了。
标签: javascript android web-applications webview android-webview