我正在開發一個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。該類中的錯誤回調將在稍後發揮作用...以相同的結果重建... –