2013-07-11 25 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

相关问题