版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30879415/article/details/81265455
准备工作
安装cordova
npm install -g cordova
1
创建cordova工程并添加android平台
cordova create 项目名 包名
cd 项目名
cordova platform add android
1
2
3
安装plugman
npm install -g plugman
1
创建plugin
创建插件(本博客demo插件名mytoast,包名com.digichain.mytoast)
plugman create --name 插件名 --plugin_id 插件id --plugin_version 插件版本
// 插件id,比如 com.digichain.xin
// 插件版本,比如 1.0.0
1
2
3
plugin.xml
plugin{
id: "插件id",
version: "插件版本",
name: "插件名称",
js-module: {
name: "模块名称",
src: "js 文件地址",
clobbers: {
target: "H5调用中间件方法"
}
},
platform: {
source-file: {
src: "类名",
target-dir:"插件文件复制到原生项目的位置",
feature: {
name: "js中间件通过它调用原生方法"
},
uses-permission: "开通的权限"
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
添加平台
plugman platform add --platform_name andorid/ios
//添加后src下会出现android
//并且初始化了java文件、js文件以及plugin.xml
1
2
3
mytoast.java 和 mytoast.js
首先我们来看mytoast.java

public class mytoast extends CordovaPlugin {

@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if (action.equals("showToast")) {
String message = args.getString(0);
this.showToast(message, callbackContext);
return true;
}
return false;
}

private void showToast(String message, CallbackContext callbackContext) {
if (message != null && message.length() > 0) {
Activity activity = this.cordova.getActivity();
android.widget.Toast.makeText(activity, message, Toast.LENGTH_SHORT).show();
callbackContext.success(message);
} else {
callbackContext.error("Expected one non-empty string argument.");
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
plugin的方法格式大致如此,其中execute方法是必须的,外部调用方法传递action字段,根据action我们可以调用底层的相关程序,并且通过CallbackContext回调success方法或error方法。这里,我们实现了showToast方法,当action为”showToast”字段视,进行if(action.equals(“showToast”)){}内的操作。

相应的,mytoast.js 文件中我们也要实现相应的方法调用

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

exports.showToast = function (msg, success, error) {
exec(success, error, 'mytoast', 'showToast', [msg]);
};
1
2
3
4
5
6
添加package.json
//在toast插件文件夹中直接init 一个
npm init
1
2
大功告成!!!!!

安装
创建cordova项目并进行安装
cordova create testplugin com.digichain.testplugin
cordova platform add android
cordova plugins add 插件地址
1
2
3
在/www/js/index/js下添加事件进行测试,运行一下
cordova run android
1
okkkkkkkkkkkkk!!!!!!!!完美!
---------------------
作者:陈广鹏
来源:CSDN
原文:https://blog.csdn.net/qq_30879415/article/details/81265455
版权声明:本文为博主原创文章,转载请附上博文链接!

cordova 自定义 plugin的更多相关文章

  1. Cordova与现有框架的结合,Cordova插件使用教程,Cordova自定义插件,框架集成Cordova,将Cordova集成到现有框架中

    一.框架集成cordova 将cordova集成到现有框架中 一般cordova工程是通过CMD命令来创建一个工程并添加Android.ios等平台,这样的创建方式可以完整的下载开发过程中所需要的的插 ...

  2. Cordova自定义插件开发

    Cordova自定义插件开发 一.创建Cordova项目 在创建项目前请确保安装Cordova Cordova环境配置:https://www.w3cschool.cn/cordova/cordova ...

  3. cordova自定义插件开发流程

    cordova自定义插件开发:1.cordova安装:npm install -g cordova2.plugman安装:npm install -g plugman3.cordova创建工程:cor ...

  4. cordova添加plugin

    cordova添加plugin #在线安装 cordova create chankoujie com.example.chankoujie ChanKouJie cordova plugin add ...

  5. Gradle学习系列之十——自定义Plugin(本系列完)

    在本系列的上篇文章中,我们讲到了如何自定义Task类型,在本篇文章中,我们将讲到如何自定义Plugin. 请通过以下方式下载本系列文章的Github示例代码: git clone https://gi ...

  6. vue---vue2.x自定义plugin,给vue添加全局方法,原型上增加全局方法

    1. 自定义plugin.js export default{ install(Vue,options); { Vue.prototype.toStringTwo=(str)=>( ('0000 ...

  7. Cordova自定义插件

    项目原因需要自定义Cordova插件,下面把实现过程记录以便将来查阅.工程为Eclipse下的Android工程,该工程已经引入Cordova.Cordova版本4.0.2.1.定义插件类OpenAp ...

  8. cordova自定义插件的创建过程

    最近学习了cordova插件,记录一下大概的过程,仅供参考. 前期的配置就不记录了网上好多. 在简书上从新写了一个更详细的cordova插件教程,有需要的可以点这里进去看看. 第一步 创建一个cord ...

  9. ionic2/cordova自定义插件集成aar包

    一.准备自定义插件 1. 准备:安装plugman npm install -g plugman 2. 新建组件 plugman create --name MyPlugin --plugin_id ...

随机推荐

  1. Python基础(time模块,datetime模块)

    #Author : Kelvin #Date : 2019/1/6 15:10 import time #获取此时的时间戳(从此刻到1970年一月一号零点的秒数) res1=time.time() p ...

  2. Python基础(max,min方法)

    max函数(min函数使用方法一致): #-----------------max函数----------------- #max之简单层次的使用 li=[1,0,2,45,12,-2,7,9] re ...

  3. 【Android Studio安装部署系列】六、在模拟器上运行项目

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 在模拟器上运行项目的步骤.不过在实际开发中,一般不采用这种方式,因为影响电脑的运行,所以一般使用真机运行项目. 运行项目 创建模拟器 ...

  4. 【Android Studio安装部署系列】三十四、将Eclipse项目导入到Android Studio中

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 我采用的是笨方法:新创建Android Studio项目,然后将Eclipse项目中的目录一一复制到Android Studio项目 ...

  5. TypeScript 中的方法重载

    方法重载(overload)在传统的静态类型语言中是很常见的.JavaScript 作为动态语言, 是没有重载这一说的.一是它的参数没有类型的区分,二是对参数个数也没有检查.虽然语言层面无法自动进行重 ...

  6. Flink从入门到放弃(入门篇3)-DataSetAPI

    戳更多文章: 1-Flink入门 2-本地环境搭建&构建第一个Flink应用 3-DataSet API 4-DataSteam API 5-集群部署 6-分布式缓存 7-重启策略 8-Fli ...

  7. 图像检索(3):BoW实现

    在上一篇文章中图像检索(2):均值聚类-构建BoF中,简略的介绍了基于sift特征点的BoW模型的构建,以及基于轻量级开源库vlfeat的一个简单实现. 本文重新梳理了一下BoW模型,并给出不同的实现 ...

  8. 痞子衡嵌入式:如果i.MX RT是一匹悍马,征服它时别忘了用马镫MCUBootUtility

    -- 跨界之风吹满地,先锋当属NXP; 微控制器谁独骚?当仁不让看RT! 恩智浦半导体2017年10月正式发布了业内首款跨界处理器-i.MX RT系列,这是MCU界的汗血宝马,更是一匹桀骜不驯的悍马. ...

  9. SpringMVC之Controller和参数绑定

    在上一篇Spring+SpringMVC+Mybatis整合中说到了SSM的整合,并且在其中添加了一个简单的查询功能,目的只是将整个整合的流程进行一个梳理,下面在上一篇中工程的基础上再说一些关于Spr ...

  10. 创建简单的npm脚手架

    前言 vue-cli, webpack-cli 等脚手架是不是用起来爱不释手?自己写了个模版每次来回复制粘贴代码是不是很难维护?如果你是对前端.Node操作有一定的了解,同时也存在以上疑问,那就请尽情 ...