从cordova插件的本机java部分调用javascript端
我写了一个简单的插件来处理nfc标签,因为Cariot nfc cordova插件不适合我的需要。 我所面临的问题是,我发现的所有教程似乎都假设我将从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
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();
希望这有帮助