【发布时间】:2013-07-11 13:39:54
【问题描述】:
我正在开发一个 Phonegap 项目,我正处于使用自定义插件扩展 Phonegap 的基本功能的阶段。我遇到的愚蠢问题是让插件做出正确反应。如果使用“echo”参数调用插件,则应返回其匹配的参数名称,“echo2”也是如此。
奇怪的部分:
'echo' 返回预期的答案(它执行成功回调),而 '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是非空且非空的,但 不能 发生在代码 sn-p你给了 -
是的,双引号和字符串消息已更新。谢谢@ColinMorelli。类中的错误回调将在稍后发挥作用......以相同的结果重建......
标签: java javascript cordova phonegap-plugins