我无法使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,我无法找出它是什么。
答案 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中。