使用 Worklight 从原生 Android 代码触发 javascript 事件侦听器
Posted
技术标签:
【中文标题】使用 Worklight 从原生 Android 代码触发 javascript 事件侦听器【英文标题】:Fire javascript event listener from native Android code using Worklight 【发布时间】:2015-04-08 03:00:20 【问题描述】:我正在阅读以下教程: https://www.ibm.com/developerworks/community/blogs/worklight/entry/android_combining_native_and_web_controls_in_cordova_based_applications?lang=en.
我正在尝试按照教程并将其与 ReactJS 集成到我的应用程序中。我创建了一个插件来调用本机和 javascript 代码,我的 Cordova 插件位于 HybirdBridge.java
中,而我的 javascript 监听器位于 NativeEventListener.js
中。我的代码可以在这里找到:https://github.com/nguyengiangdev/HybridBridge
我在操作栏中有一个搜索按钮。当我单击搜索按钮时,我尝试调用 javascript 事件,但它在 listenerCallbackContext
中引发空指针异常。
我不知道为什么?谁能帮我解决这个问题?
谢谢
【问题讨论】:
【参考方案1】:您应该查看 MobileFirst Platform(以前称为 Worklight)开发人员中心以获取有关此主题的更多信息。
以下链接包含有关如何向混合应用程序添加本机功能的各种 Android、ios 和 Windows Phone 教程。
https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-7-0/adding-native-functionality/
从 Worklight 6.2 开始,您可以使用以下代码在混合和原生之间来回传递数据,而无需创建自己的 Cordova 插件:
混合到原生
发送
var data = someproperty : 1234 ;
WL.App.sendActionToNative("doSomething", data);
混合到原生
接收
WL.getInstance().addActionReceiver(new WLActionReceiver()
void onActionReceived(String action, JSONObject data)
// process received action
);
原生到混合
发送
JSONObject data = new JSONObject();
data.put("someProperty", 12345);
WL.getInstance().sendActionToJS("doSomething", data);
接收
WL.App.addActionReceiver ("MyActionReceiverId", function(received)
if (received.action === "doSomething")
// handle the data received
);
有关此次访问的更多信息: http://www-01.ibm.com/support/knowledgecenter/SSHS8R_7.0.0/com.ibm.worklight.dev.doc/devref/t_sending_actions_native_to_js.html
其他有用的链接:
IBM MobileFirst 平台入门:
https://developer.ibm.com/mobilefirstplatform/documentation/getting-started/
IBM MobileFirst Platform Foundation v7 知识中心:
http://www-01.ibm.com/support/knowledgecenter/SSHS8R_7.0.0/wl_welcome.html
【讨论】:
还有一篇关于 ReactJS 和 MFP 的博文:developer.ibm.com/mobilefirstplatform/2015/04/03/… 谢谢@Yoel Nunez。我会试试的。以上是关于使用 Worklight 从原生 Android 代码触发 javascript 事件侦听器的主要内容,如果未能解决你的问题,请参考以下文章
无法扩展 GCMIntentService 以修改原生 Android 客户端的通知视图 [Worklight 7.0 + Android]
在调试模式下连接到 Android 上的 Worklight 崩溃
Worklight 6.1 混合应用程序将参数从本机返回到混合
有没有办法使用 worklight 6.2 或 phonegap 混合应用程序从 android 和 ios 中的另一个应用程序启动一个应用程序?