cordova自定义android插件,Android平台下,自定义Cordova插件

除了使用Cordova官方的插件外,我们也可以自己写插件,来满足业务需求。

在Android平台,每个插件都有两部分组成:

插件的JavaScript文件

插件的JAVA类

创建插件的JavaScript

插件所在的目录assets/www/plugins/,如果你添加了Cordova的插件,可以看到下图

cordova_plugin_path.png

可以看到Cordova自己的插件都定义在,以其包名命名的文件夹下的www目录中,我们也按照此约定创建JS,指定包名为 com.test.plugin。

cordova_plugin_create_js1.png

JS内容如下:

// "com.test.plugin.PluginTest"指定的是此插件的ID

cordova.define("com.test.plugin.PluginTest", function (require, exports, module) {

var exec = require('cordova/exec');

function PluginTest() {

}

PluginTest.prototype = {

test1: function (params, successCallback, errorCallback) {

// 第三个参数是插件的名称,必须与config.xml文件中的feature.name保持一致

exec(successCallback, errorCallback, "PluginTest", "test1", [params]);

},

test2: function (params, successCallback, errorCallback) {

exec(successCallback, errorCallback, "PluginTest", "test2", [params]);

}

}

module.exports = new PluginTest();

});

创建插件的JAVA类

继承CordovaPlugin类,并重写其execute方法,约定:类中的方法名与js中的方法名保持一致,方便查找。

package com.test.plugin;

import org.apache.cordova.CallbackContext;

import org.apache.cordova.CordovaPlugin;

import org.json.JSONArray;

import org.json.JSONException;

import android.widget.Toast;

public class PluginTest extends CordovaPlugin {

/**

* 必须重写execute方法

*/

@Override

public boolean execute(String action, JSONArray args,

CallbackContext callbackContext) throws JSONException {

if("test1".equals(action)) {

this.test1(args, callbackContext);

}else if("test2".equals(action)) {

this.test2(args, callbackContext);

}else{

return false;

}

return true;

}

private void test1(JSONArray args, final CallbackContext callbackContext)

throws JSONException {

// 开启worker线程

cordova.getThreadPool().execute(new Runnable() {

@Override

public void run() {

System.out.println("Execute test1 method");

callbackContext.success("执行成功回调");

}

});

}

private void test2(JSONArray args, final CallbackContext callbackContext)

throws JSONException {

// 在UI线程上执行

cordova.getActivity().runOnUiThread(new Runnable() {

@Override

public void run() {

Toast.makeText(cordova.getActivity(), "Execute test2 method", Toast.LENGTH_SHORT).show();

callbackContext.error("执行失败回调");

}

});

}

}

配置插件

下面是配置插件,让Cordova知道我们写了个插件。

打开res/xml/config.xml文件,添加一个feature:

cordova_plugin_config.png

Cordova会解析config.xml文件,每个feature就是一个plugin.

key

desc

feature.name

plugin的名称

android-package

指定插件的java类,必须是含包名的完整命名

onload

为true,表示webview在加载html时,是否加载此插件。默认为false,当要使用此插件时,再去加载

到这里插件就完成了,可以在JS中调用插件的方法了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值