首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Phonegap: JS对Java方法的调用只在1种情况下有效

Phonegap: JS对Java方法的调用只在1种情况下有效
EN

Stack Overflow用户
提问于 2013-07-11 13:39:54
回答 1查看 857关注 0票数 0

我正在进行一个Phonegap项目,在那里,我正处于用自定义插件扩展Phonegap的基本功能的阶段。我有一个愚蠢的问题,就是让插件做出正确的反应。如果使用“echo”参数调用插件,则应返回其匹配的参数名称,“echo 2”的情况也是如此。

奇怪的部分:

'echo2‘返回预期的答案(它执行成功回调),而’echo2‘变量返回错误回调。真的没有点子了..。

JS定义:相同函数(只有第4个参数不同)

代码语言:javascript
复制
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调用以下函数:

代码语言:javascript
复制
echo('Echo String', function(echoValue) {
      alert(echoValue);
});

sync('Sync String', function(echoValue) {
      alert(echoValue);
});

Java类:

代码语言:javascript
复制
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.");
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-12 10:02:37

对于所有有类似问题的人,这里提供了一些信息,说明为什么这样做不起作用:

首先:代码工作正常-问题不在这里。

哪里有错?

当我问这个问题时,Java类被命名为Echo,它在调用类方法时工作。试图调用任何其他方法失败,因为

Phonegap构建服务不允许直接包含插件

,但在我的例子中,仍然部分工作,因为Java碰巧是Phonegap构建为我提供的一个标准插件。

这个由Phonegap构建包含的Echo插件碰巧有一个方法echo,这显然导致了成功的回调。

进一步阅读后的:

一个名为plugman的工具(也由Adobe开发)通过将创建的插件添加到phonegap项目中来处理自定义插件实现.我仍然在测试和学习这一点,官方信息(以及我发现的唯一信息)可以在这里获得:

导致不推荐的pluginstall工具。

Plugman工具Repo - GitHub

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17594960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档