Cordova 安卓插件开发

一。环境准备

  • cordova 环境。
  • 安卓环境。
  • plugman环境。
    • npm install -g plugman(淘宝镜像用cnpm)

二。开发工具

  • webStorm
  • AndroidStudio

三。开始开发

  • 1.创建插件

    plugman create --name toastPlugin --plugin_id toast-plugin-xytoast --plugin_version 1.0.1
    
    • --name 插件名
    • --plugin_id 插件id,最好用小写,这个插件id会在用户安装完之后显示在config.xml文件中的<plugin name="cordova-plugin-whitelist" spec="1" />
    • --plugin_version 插件版本号
  • 2.创建cordova项目

  • 3.创建android项目,并引入CordvaLib,同时编写java类继承CorovaPlugin

    public class ShowToast extends CordovaPlugin {
    
    private CallbackContext mCallbackContext;
    
    
    /**
     * @param action          调用方传来的动作,即要肝肾恶魔
     * @param args            参数
     * @param callbackContext 返回给客户端的值
     * @return
     * @throws JSONException
     */
    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        this.mCallbackContext = callbackContext;
        if ("toastFunc".equals(action)) {
    
            String message = args.getString(0);
            Toast.makeText(cordova.getActivity(), message, Toast.LENGTH_SHORT).show();
            mCallbackContext.success("success");
            return true;
        }
        mCallbackContext.error("error");
        return false;
    }
    }
    
类路径,plugin.xml中使用
  • 4.为插件创建android目录

    • 1.在插件的src目录下创建android与ios目录,分别对应安卓插件与ios插件
    如图
    • 2.将安卓原生的ShowToast.java放入安卓目录下。
    图片.png
  • 5.修改plugin.xml文件
    plugin.xml详解

    <?xml version='1.0' encoding='utf-8'?>
    <plugin id="toast-plugin-xytoast" version="1.0.1" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
     <name>toastPlugin</name>
     <js-module name="toastPlugin" src="www/toastPlugin.js">
         <clobbers target="cordova.plugins.toastPlugin" />
     </js-module>
     <platform name="android">  
         <source-file src="src/android/ShowToast.java" target-dir="src/cn/shuto/toast"/>  
         <config-file target="res/xml/config.xml" parent="/*">  
             <feature name="ShowToast">  
                 <param name="android-package" value="cn.shuto.toast.ShowToast"/>  
             </feature>  
         </config-file>  
     </platform> 
    </plugin>
    
    • <plugin>:id为创建插件时指定的id
    • <name>:name为创建插件时指定的name
    • <js-module>:文件中可能会有多个js-module的,一个js-module就是一个调用的方式。只为js端调用使用。js端调用时为target.functionName 即cordova.plugins.toastPlugin.functionName
    • <platform>:为插件添加安卓平台
    • <source-file> :src为java源文件的路径,需要相对于plugin.xml到文件的位置。target-dir为插件安装好后,源文件的位置(即以后在platform/android下的目录),要和下面的feature标签下param标签里的value中的包名对应
    • <feature>name要与java类名一致都为ShowToast, param标签中的value是插件安装好后java类名全路径 与安卓端的类路径保持一致即可
  • 6.修改toastPlugin.xml

    var exec = require('cordova/exec');
    exports.toast = function (arg0, success, error) {
      exec(success, error, 'ShowToast', 'toastFunc', [arg0]);
    };
    
    • exports.toast:暴露出的方法,供js端调用
    • success:成功回调
    • error:失败回调
    • ShowToast:是plugin.xml中配置的feature的name
    • toastFuc:action,原生根据不同的action处理不同的请求
    • [arg0]:参数,需要传递个原生端的内容
  • 7.为插件创建package.json文件
    plugman createpackagejson 插件绝对路径

      plugman createpackagejson C:\Users\lzj\Desktop\plugin\toastPlugin
    
  • 8.cordova安装相应的插件
    cordova项目目中下执行

    cordova plugin add C:\Users\lzj\Desktop\plugin\toastPlugin(插件名)
    
  • 9 js调用

    function showToast() {
         //msg为 mCallbackContext.success("success");的返回值
         cordova.plugins.toastPlugin.toast('吐司', function (msg) {
             alert(msg);
         }, function (msg) {
             alert(msg);
         })
     }
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容

  • Cordova自定义插件实战# 使用前提 这篇文章是之前发表在CSDN上的,拿过来充数用的,其实那个时候也写了不少...
    one_cup阅读 1,560评论 5 3
  • 一 、 安装Cordova 开发环境 //用npm 命令全局安装 cordova, npm install -g ...
    townof1997阅读 255评论 0 0
  • 主要的目的就在这了,我要学习一下怎么写cordova插件,如何调试,如何写config plugin.xml文件...
    wyude阅读 320评论 0 0
  • 一、Cordova的基础点 在混合式应用中,我们通过现有的Cordova插件,可以轻松的在 H5 上调用手机nat...
    IT晴天阅读 6,604评论 3 11
  • 导语 Apache Cordova是一个开源的移动开发框架。允许你用标准的web技术-HTML5,CSS3和Jav...
    ApolloGuibo阅读 4,340评论 2 9