Android的Phonegap插件无效。为什么?

时间:2012-10-22 15:48:50

标签: android cordova plugins undefined

我无法使Android手机插件工作。甚至没有一个我发现的例子也没有我试图自己创造一个可悲的失败。我首先尝试使用像this one这样的教程。他们不适合我。我总是遇到Cannot call method of undefined错误。

所以我尝试了一些准备。从github获得this project。它只是一个简单的插件来展示吐司。我查看了我在教程中学到的所有内容:

//the package name in the java
package com.phonegap.toast;

//my class extends Plugin and has a simple show toast method.

public class Tutorial extends Plugin {
@Override
public PluginResult execute(String cmd, JSONArray args, String callback) {
    if(cmd.equals("toast"))
    {
        return showToast(args);
    }
    return null;
}

private PluginResult showToast(JSONArray args) {
    final String message;
    try {
        message = args.getString(0);
        ctx.runOnUiThread(new Runnable()
        {
            public void run() {
                Toast myToast = Toast.makeText(ctx, message, Toast.LENGTH_SHORT);
                myToast.show();
            }
        });

        return new PluginResult(PluginResult.Status.OK);
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return new PluginResult(PluginResult.Status.JSON_EXCEPTION);
    }       
}   

}

插件在res / xml / plugins.xml中定义

plugin name="Tutorial" value="com.phonegap.toast.Tutorial"

并且不,如果我把它放在rex / xml / config.xml上它也不起作用

最后,调用插件的方法:

function createToast() {
  // i also tried window.Tutorial.showToast('Hello AndroidOpen'); with no success
  window.plugins.Tutorial.showToast('Hello AndroidOpen');
}

在这里我再次遇到同样的错误。

10-22 15:39:07.770: E/Web Console(2885): Uncaught TypeError: Cannot call method 'showToast' of undefined at file:///android_asset/www/main.js:123

任何开明的灵魂都可以向我解释我做错了什么?我已经尝试了几天,有许多不同的插件,我自己甚至this ones,我无法找出它是什么。

1 个答案:

答案 0 :(得分:2)

好的,这里有一些可能会让你失望的事情。首先,如果res / xml中存在config.xml文件,那么它将优先于plugins.xml。所以你需要将你的插件行添加到config.xml中。

确保包含Toast插件的.js文件。

第三,window.plugins已被弃用,因此如果您使用的是PhoneGap 2.0.0或更高版本,则可能需要修改.js。看看我的blog post on the topic。根本的变化是你现在需要在你的JS中使用新的PluginName,因为默认情况下不再将它放在window.plugins中。