私は 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.");
}
}
}