Cordova 3.0插件,未找到类

时间:2014-02-12 19:04:30

标签: android plugins cordova config

我正在尝试使用Echo示例在Android上为Cordova 3.0创建一个插件,但它无效。

我已将<plugin name="MMSSender" value="my.package.mms.MMSSender" />添加到config.xml(来自wwwcordova build}

然后我在my.package.mms中创建了一个新的类MMSSender,并给出了示例代码;

package my.package.mms;

import org.apache.cordova.api.CordovaPlugin;
import org.apache.cordova.api.PluginResult;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;


public class Echo extends CordovaPlugin {
    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        if (action.equals("echo")) {
            String message = args.getString(0); 
            this.echo(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.");
        }
    }
}

我在主js文件下面添加了代码。 修改包含在deviceready事件

中的代码
window.echo = function(str, callback) {
    cordova.exec(callback, function(err) {
        callback(err);
    }, "MMSSender", "echo", [str]);
};

window.echo("echome", function(echoValue) {
    alert(echoValue);
});

问题是echoValue包含“未找到类”。

有什么想法吗? 我是否必须修改plugins文件夹?

2 个答案:

答案 0 :(得分:8)

通常,您使用plugin.xml文件,java类和js文件准备一个单独的包,然后使用cordova plugin add命令将其添加到应用程序。

无论如何,您可能会遗漏的一件事是cordova.exec函数的参数名称与您的插件类之间的链接。

您应该修改文件res/xml/config.xml并添加如下行:

<feature name="MMSSender">
    <param name="android-package" value="my.package.mms.MMSSender" />
</feature>

编辑:


在您的仓库中,您需要更正MMS.java中的导入:

替换

import org.apache.cordova.api.CordovaPlugin;
import org.apache.cordova.api.PluginResult;

import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;

一旦纠正,你至少应该能够建立项目。

答案 1 :(得分:0)

将您的phonegap(Cordova)项目导入IDE(Eclipse + ADT)作为现有的Android项目。然后你会看到你的插件java代码有什么问题。在我的情况下,问题是包名称错误,它导致从javascript回调中找不到类消息。