Cordova 3.0插件,未找到类

tho*_*ron 1 plugins android config cordova

我正在尝试使用Echo示例在Android上为Cordova 3.0创建插件,但它无法正常工作.

我加入<plugin name="MMSSender" value="my.package.mms.MMSSender" />了我config.xml(来自www和做过cordova 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.");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在主js文件下面添加了代码.编辑:包装在deviceready事件中的代码

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

window.echo("echome", function(echoValue) {
    alert(echoValue);
});
Run Code Online (Sandbox Code Playgroud)

问题是echoValue包含"Class not found".

任何的想法 ?我必须修改plugins文件夹吗?

Qui*_*Fix 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>
Run Code Online (Sandbox Code Playgroud)

编辑:


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

更换

import org.apache.cordova.api.CordovaPlugin;
import org.apache.cordova.api.PluginResult;
Run Code Online (Sandbox Code Playgroud)

import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;
Run Code Online (Sandbox Code Playgroud)

一旦纠正,您至少应该能够构建项目.