我写了一个简单的插件来处理nfc标签,因为战车nfc cordova插件不适合我的需要。 我面临的问题是我发现的所有教程似乎都假设我会从javascript方面调用本机方法,如下所示:
cordova.exec(callback, function(err) {}, "myClass", "myMethod", [data]);
事情是我写的插件在检测到TAG_DISCOVERED事件时,它在本机端的onNewIntent方法中是神奇的。这是正常工作,我在adb logCat中获得正确的数据。问题是我不知道如何将数据传递给javascript端。
我知道我应该像这样发送pluginResult:
PluginResult result = new PluginResult(PluginResult.Status.OK, "myData");
result.setKeepCallback(true);
callbackContext.sendPluginResult(result);
但我对javascript方面一无所知,因为本机方是由Android Intent而不是我的客户端触发的。我是一个新手,当涉及到机器人生命周期,因此很困惑。任何帮助都会非常受欢迎。
答案 0 :(得分:0)
当您从RandomBlob.java调用此函数时:
callbackContext.success(result);
它将在您的.js文件内(通常在Cordova中)在设备就绪的内部调用以下函数。该函数应为:
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();
希望这会有所帮助!