0

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

1 に答える 1

0

同様の問題を抱えているすべての人に、これが機能しなかった理由に関する情報を次に示します。

まず、コードは正常に動作します - 問題はここにはありません。

どこが悪いの?

私が質問したとき、Javaクラスはクラスメソッドが呼び出されたときに機能するEchoという名前でした。他のメソッドを呼び出そうとすると失敗します。

Phonegap Build Service はプラグインの直接インクルードを許可しません

しかし、私の場合は、Java Class Echo がたまたま Phonegap Build に含まれている標準プラグインであるため、部分的に機能していました。

Phonegap Build に含まれているこの Echo プラグインには、たまたま echo メソッドがあり、その結果、コールバックが成功したことは明らかです。

さらに読んだ後:

plugman (これも Adob​​e によって開発された) と呼ばれるツールは、作成されたプラグインを phonegap プロジェクトに追加することによって、カスタム プラグインの実装を処理します。

非推奨の pluginstall ツールにつながる

Plugman ツール レポ - GitHub

于 2013-07-12T10:02:37.183 に答える