我正在尝试使用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.");
}
}
}
我在主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
文件夹?
答案 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回调中找不到类消息。