- 插件的Java实现:
新建class继承CordovaPlugin
public class TestPlugin extends CordovaPlugin {
@Override
public void initialize(CordovaInterface cordova, CordovaWebView webView) {
super.initialize(cordova, webView);
}
//重写execute方法,具体逻辑在此执行
//是在WEB的线程,在UI线程执行可以用
//cordova.getActivity().runOnUiThread(new Runnable() {
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
Log.e("-TEST", "TEST");
return super.execute(action, args, callbackContext);
}
}
- 插件的js
cordova.define("cordova-plugin-test.TestPlugin", function(require, exports, module) {
/*
* 实现方式一
*/
var exec = require("cordova/exec");
module.exports = {
doTest: function(content){
//调用时 插件名需和feature中的name一致 exec(null,null,"TestPlugin","action",[content]);
},
doTestWithCallback: function (content, successCallback, errorCallback) {
cordova.exec(successCallback, errorCallback, "TestPlugin", "actionWithCallback", [content]);
}
}
/*
* 实现方式二
*/
/* var exec = require('cordova/exec');
var FXP = function(){};
FXP.prototype.toast=function(content) {
exec(null, null, "ToastDemo", "toast", [content]);
};
FXP.prototype.toastWithCallback=function(content,success, error) {
exec(success, error, "ToastDemo", "toastWithCallback", [content]);
};
var fxp = new FXP();
module.exports = fxp;*/
/*
* 实现方式三
*/
/* var exec = require('cordova/exec');
exports.toast = function(content) {
exec(null, null, "ToastDemo", "toast", [content]);
};
exports.toastWithCallback=function(content, successCallback, errorCallback){
exec(successCallback,errorCallback,"ToastDemo","toastWithCallback",[content]);
};*/
});
- 在cordova_plugins.js中注册插件
cordova.define('cordova/plugin_list', function(require, exports, module) {
module.exports = [
{
//插件js中的定义
"id": "cordova-plugin-test.TestPlugin",
//文件路径
"file": "plugins/test/test.js",
"pluginId": "cordova-plugin-test",
"clobbers": [
"TestPlugin"
]
}
];
module.exports.metadata =
// TOP OF METADATA
{
"cordova-plugin-test": "0.0.1"
};
// BOTTOM OF METADATA
});
- 在config.xml中声明插件
<feature name="TestPlugin">
<param
name="android-package"
//包名+类名
value="com.jsk.cordovademo.plugin.TestPlugin" />
</feature>
</widget>
- 在html中调用
function test2(){
//前缀必须和clobbers中定义的一致
TestPlugin.doTest("test");
}
</script>