2013-07-11 52 views
0

我正在開發一個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."); 
     } 
    } 
} 
+1

嗯,一個'echo'和'echo2'應該在你的交換機中用雙引號,而不是單引號(在Java文件中)。而且,而不是'String.message',我想你想'String message'。第三,這沒有任何意義,因爲唯一的情況是你可能得到一個錯誤的回調函數,如果'message'非空且非空,但*不能在你給出的代碼段中發生 –

+0

是的,雙引號和String消息更新。謝謝@ColinMorelli。該類中的錯誤回調將在稍後發揮作用...以相同的結果重建... –

回答

0

給所有有類似的問題的,這裏是爲什麼這不工作的一些信息:

首先:的代碼工作正常 - 問題不在這裏。

故障在哪裏?

當我問這個問題時,Java 類被命名爲Echo,它在調用類方法時起作用。試圖調用任何其他方法失敗,因爲

的PhoneGap構建服務不允許直接包含插件

但對我來說它仍然是部分因爲Java類回聲恰好是一個工作的Phonegap Build包含的標準插件。

這個Phonegap Build包含的Echo插件恰好有一個方法回聲,這顯然會導致成功回調。

進一步閱讀後:

一個工具,叫做plugman(也由Adobe開發)加入創建的插件到的PhoneGap項目處理自定義插件實現......我仍然在測試和學習這一點,官方資料(只有我找到的信息),請訪問:

Leads to the deprecated pluginstall tool

Plugman Tool Repo - GitHub

相關問題