从cordova插件的本机java部分调用javascript端

从cordova插件的本机java部分调用javascript端,cordova,callback,cordova-plugins,Cordova,Callback,Cordova Plugins,我写了一个简单的插件来处理nfc标签,因为Cariot nfc cordova插件不适合我的需要。 我所面临的问题是,我发现的所有教程似乎都假设我将从javascript端调用本机方法,如下所示: cordova.exec(callback, function(err) {}, "myClass", "myMethod", [data]); 问题是,我编写的插件在检测到TAG_发现的事件时,在本机端的onNewIntent方法中发挥了神奇的作用。这是工作,因为它应该,我得到了正确的数据在亚行l

我写了一个简单的插件来处理nfc标签,因为Cariot nfc cordova插件不适合我的需要。 我所面临的问题是,我发现的所有教程似乎都假设我将从javascript端调用本机方法,如下所示:

cordova.exec(callback, function(err) {}, "myClass", "myMethod", [data]);
问题是,我编写的插件在检测到TAG_发现的事件时,在本机端的onNewIntent方法中发挥了神奇的作用。这是工作,因为它应该,我得到了正确的数据在亚行logCat。问题是我不知道如何将数据传递到javascript端

我知道我应该像这样发送插件结果:

PluginResult result = new PluginResult(PluginResult.Status.OK, "myData");
result.setKeepCallback(true);
callbackContext.sendPluginResult(result);

但我对javascript端一无所知,因为本机端是由android意图触发的,而不是我的客户端。谈到机器人的生命周期,我是一个新手,因此很困惑。欢迎提供任何帮助。

当您从RandomBlob.java调用此函数时:

callbackContext.success(result);
它将在.js文件中调用以下函数,通常是在Cordova中,即其内部deviceready中。该功能应为:

var app = {
initialize: function () {
    document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
},
onDeviceReady: function () {
    this.receivedEvent('deviceready');
},
receivedEvent: function (id) {
    function success(value) {
        var result = value['result'];
        var arg1 = value['arg1'];
        var arg2 = value['arg2'];
        console.log("Cordova.Exec called to multiply " + arg1 + " & " + arg2 + " which resulted in " + result);
    }
    setTimeout(function () {
        Cordova.exec(success, null, "RandomBlob", "performMultiply", [500, 3]);
    }, 10000);
}
};
app.initialize();
希望这有帮助