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文件夹吗?
通常,您使用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)
一旦纠正,您至少应该能够构建项目.
| 归档时间: |
|
| 查看次数: |
6904 次 |
| 最近记录: |