使用 objects 参数将 javascript 代码绑定到 android 代码
Binding javascript code to android code with objects parameters
如标题所示,我正在尝试将 javascript 代码绑定到我的 android 应用程序,这样我就可以在我的应用程序中对我的网站发送的 event/message 做出反应。
在阅读了与 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 而不是字符串,但它不起作用。
我尝试投射所有我认为可能有用的东西.. JSONObject / JSONObject? /任何/任何? /Object/Object?等等..
当我在 javascript 上发送 object 时,似乎没有任何效果。我在我的应用程序中得到的只是一个空响应。
有人试过类似的东西吗?我错过了什么?
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 代码绑定到我的 android 应用程序,这样我就可以在我的应用程序中对我的网站发送的 event/message 做出反应。
在阅读了与 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 而不是字符串,但它不起作用。 我尝试投射所有我认为可能有用的东西.. JSONObject / JSONObject? /任何/任何? /Object/Object?等等..
当我在 javascript 上发送 object 时,似乎没有任何效果。我在我的应用程序中得到的只是一个空响应。
有人试过类似的东西吗?我错过了什么?
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));