我正在开发一个Phonegap项目,我正在使用自定义插件扩展Phonegap的基本功能。我遇到的愚蠢问题是让插件做出正确反应。如果使用'echo'参数调用插件,则应回答匹配的参数名称,'echo2'也一样。Phonegap:JS调用Java方法仅适用于一种情况
奇怪的部份:
“回声”返回预期的答案(它执行成功的回调),而“ECHO2”变种返回错误回调。认真运行的想法......
的JS定义:相同功能(仅限于第4个参数是不同的)
window.echo = function(str, callback) {
cordova.exec(callback, function(err) {
callback('Nothing to echo.');
}, 'Echo', 'echo', [str]);
};
window.sync = function(str, callback) {
cordova.exec(callback, function(err) {
callback('Nothing to echo.');
}, 'Echo', 'echo2', [str]);
};
的JS对这些函数的调用:
echo('Echo String', function(echoValue) {
alert(echoValue);
});
sync('Sync String', function(echoValue) {
alert(echoValue);
});
Java类别:
public class Echo extends CordovaPlugin {
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
switch(action) {
case "echo": String message = args.getString(0);
this.echo("Call on: Echo.echo()" + message, callbackContext);
return true;
case "echo2": String message = args.getString(0);
this.echo("Call on: Echo.echo2()" + message, callbackContext);
return true;
}
return false;
}
private void echo(String message, CallbackContext callbackContext) {
if (message != null && message.length() > 0) {
callbackContext.success(message);
} else {
callbackContext.error("Expected one non-empty string argument.");
}
}
}
嗯,一个'echo'和'echo2'应该在你的交换机中用双引号,而不是单引号(在Java文件中)。而且,而不是'String.message',我想你想'String message'。第三,这没有任何意义,因为唯一的情况是你可能得到一个错误的回调函数,如果'message'非空且非空,但*不能在你给出的代码段中发生 –
是的,双引号和String消息更新。谢谢@ColinMorelli。该类中的错误回调将在稍后发挥作用...以相同的结果重建... –