使用 Worklight 从本机 Android 代码触发 javascript 事件侦听器

Fire javascript event listener from native Android code using Worklight

我正在阅读以下教程: 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.

中抛出空指针异常

不知道为什么?谁能帮我解决这个问题?

谢谢

您应该查看 MobileFirst Platform(以前称为 Worklight)开发人员中心以获取有关此主题的更多信息。

下面的 link 包含 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

其他有用的links:

开始使用 IBM MobileFirst Platform:

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