使用 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 中的另一个应用程序启动一个应用程序?

下载文件卡住android应用程序:worklight

IBM Worklight 6.1 - 如何提供可访问性支持