1.在项目根目录下(我的是com.chl),添加一个文件夹,在文件夹里添加src、www两个子文件夹和plugin.xml文件。在www目录下,创建test.js。在src文件夹下添加android子目录(--为了区分平台,android/ios...--),在android目录下添加chl文件夹(--包名--),在chl目录下添加TestPlugin.java文件。

2.打开test.js文件,添加getName方法:

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

  var test = {

    /**

     * getName方法

     * @param successCallback:成功的回调函数
     * @param errorCallback:失败的回调函数

     */

    getName: function(successCallback, errorCallback){

      /**

       * 调用TestPlugin.java

       * action = getName

       */

      cordova.exec(successCallback, errorCallback, "TestPlugin", "getName", []);

    }

  }

  module.exports = test;

打开TestPlugin.java文件:

  package chl;

  import org.apache.cordova.CordovaPlugin;

  import org.apache.cordova.CallbackContext;

  import org.json.JSONArray;

  import org.json.JSONException;

  public class TestPlugin extends CordovaPlugin {

    public static final String ACTION_GET_NAME = "getName";

    @Override

    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {

      try{

        if(ACTION_GET_NAME.equals(action)){

          callbackContext.success("张三");

          return true;

        }

        callbackContext.error("action是不getName");

        return false;

      }catch(Exception e){

        System.out.println("异常信息: " + e.getMessage());

        callbackContext.error(e.getMessage());

        return false;

      }

    }

  }

打开plugin.xml配置插件:

<?xml version="1.0" encoding="UTF-8"?>

<plugin xmlns="http://www.phonegap.com/ns/plugins/1.0"

    xmlns:android="http://schemas.android.com/apk/res/android"

    id="cordova-plugin-chenhlTest" version="1.0.0"><!-- id为插件的名称,插件安装后会在plugins目录下出现cordova-plugin-chenhlTest文件夹 -->

  <name>chenhlTest</name>

  <description>my test plugin ...</description><!-- 描述 -->

  <license>no license ...</license>

  <engines>

    <engine name="cordova" version=">=3.0.0" /><!-- 适用版本 -->

  </engines>

  <js-module src="www/test.js" name="Test">

    <clobbers target="cordova.plugins.chenhlTest" /><!-- 调用时的名称 -->

  </js-module>

  <platform name="android"><!-- 以下是android平台配置信息 -->

    <source-file src="src/android/chl/TestPlugin.java" target-dir="src/chl" /><!-- java源代码 -->

    <config-file target="res/xml/config.xml" parent="/*">

      <feature name="TestPlugin">

        <param name="android-package" value="chl.TestPlugin"/><!-- 指向src/android/chl/TestPlugin.java文件 -->

      </feature>

    </config-file>

    <config-file target="AndroidManifest.xml">

      <!--<uses-permission android:name="android.permission.READ_PHONE_STATE" />--><!-- android权限 -->

    </config-file>

  </platform>

</plugin>

至此代码写完了,接下来就是安装插件。

3.安装插件

打开cmd,并进到项目的根目录。

执行命令:

  cordova plugin add chenhl

  注:chenhl就是最先创建的文件夹名称

正确执行完命令后,就可以在项目的plugins目录下,看到cordova-plugin-chenhlTest插件了。

4.调用插件

在页面上添加按钮

  <button class="button-full button button-positive" ng-click="pluginTest();">测试自定义插件</button>

在对应的controller:

  $scope.pluginTest=function(){

    //cordova.plugins.chenhlTest:plugin.xml文件中配置在clobbers中的

    cordova.plugins.chenhlTest.getName(function(name){

      alert(name);

    }, function(err){

      alert(err);

    });

  }

5.测试结果

自定cordova插件笔记demo的更多相关文章

  1. bootstrap-paginator 分页插件笔记

    [MVC]bootstrap-paginator 分页插件笔记   bootstrap-paginator基于bootstrap框架,使用起来非常简单.官网:http://harttle.github ...

  2. ionic实战系列(二):使用cordova插件

    本章主要关注cordova的各种插件,利用好手机(移动设备)的原生功能.首先cordova是一个将web网页内嵌到原生app的平台(核心功能),然后cordova拥有的插件系统扩展了核心功能. Cor ...

  3. 自定义 Cordova插件(基础篇)

    cordova自定义插件 注意:存放自定义cordova插件目录不能有空格可能会报错 cordova的安装 下载node.js,安装完成后你可以在命令行中使用node和npm. 安装cordova使用 ...

  4. 自定义 Cordova插件详解

    一.Cordova的基础点 在混合式应用中,我们通过现有的Cordova插件,可以轻松的在 H5 上调用手机native的功能.现有的Cordova插件能满足平时大部分的开发需求,然而,有时候找不到合 ...

  5. 自定义Cordova插件(基础篇)

    cordova自定义插件 注意:存放自定义cordova插件目录不能有空格可能会报错 cordova的安装 下载node.js,安装完成后你可以在命令行中使用node和npm. 安装cordova使用 ...

  6. 自定义Cordova插件详解

    一.Cordova的基础点 在混合式应用中,我们通过现有的Cordova插件,可以轻松的在 H5 上调用手机native的功能.现有的Cordova插件能满足平时大部分的开发需求,然而,有时候找不到合 ...

  7. Android H5混合开发(2):自定义Cordova插件

    前言 Cordova虽然定义了很多基础的插件,供H5端使用原生设备的功能. 但是,如果业务相关的功能,需要提供给H5端使用,那么,就需要我们自定义插件了. 这个"自定义"不是指由A ...

  8. (转)JQM 日期插件 mobiscroll Demo

    (原)http://www.wglong.com/main/artical!details?id=11  JQM 日期插件 mobiscroll Demo 2013-04-25 / 分类:Jquery ...

  9. 【No.4 Ionic】修改 cordova 插件

    在使用 cordova 过程 使用的插件 有可能不能满足个人需求,就需要修改,下面就直接说说步骤 插件结构 我用 cordova-plugin-inappbrowser 插件 讲解 在目录中有个 sr ...

随机推荐

  1. RBAC类使用

    1.实现首先我们先简单理解一下RBAC,顾名思义,RBAC是基于角色的权限设计.既然根据角色去分权限,那么我们就得有角色表,权限表,角色对应权限表,这是最基本的.角色是什么,就是你的身份,你的职位,也 ...

  2. ArcGisEngineForJava开发

    ArcGIS Engine control examples 一.利用Visual JavaBeans来构建应用程序 这种方案是针对使用可视化的Java组件,想要来构建和部署应用程序的开发人员.Jav ...

  3. linux系统下yum 安装mysql的方法

    菜鸟一个,记录下yum 安装mysql的方法,给需要的朋友也做个参考吧. 弄了个新vps,想安装最新版的mysql,网上查了相关资料,记录如下: 1.安装查看有没有安装过:          yum ...

  4. nginx+tomcat+dubbo单机部署多台dubbo应用

    前面的博客已经介绍如何使用nginx+tomcat,今天做的是如何在单台服务器上如何部署多台dubbo 应用的集群. 由于在项目中遇到了这个问题,今天就把它记录下来. 1.

  5. Python的平凡之路(20)

    (提问复习为主) 一.Django请求的生命周期      武彦涛:           路由系统 -> 视图函数(获取模板+数据=>渲染) -> 字符串返回给用户     二.路由 ...

  6. 如何修复Outlook 2007源文件.PST及性能优化补丁

    kb961752 微软发布了改善 Outlook 2007 个人数据文件性能的补丁,该补丁未来将会集成于 SP2 中,但是现在对于SP1用户可以提前得到它.   获取地址: http://suppor ...

  7. iOS中AutoLayer自动布局流程及相关方法

    关于UIView的Layer,IOS提供了三个方法: 1.layoutSubviews 在iOS5.1和之前的版本,此方法的缺省实现不会做任何事情(实现为空),iOS5.1之后(iOS6开始)的版本, ...

  8. Xcode下搭建opencv环境碰到的一些问题

    写了一学期py-opencv了都快结束了突然又要折腾起c++下来,真实给自己跪了,不过环境基本都搞定了,中间碰到了一些问题这里总结一下: usr/local/include和usr/local/lib ...

  9. Erlang环境用eclipse搭建

    erlide插件eclipse开发erlang   一.相关资料 Erlang 的官方网站是http://www.erlang.org.其左侧的连接指出了我们可以从这里获取的资源. 其中, Downl ...

  10. 【Windows】为节省系统资源,停掉不必要的服务

    1.windows服务名称(注册表名称)和显示名称对照表如下: < 显示名称 状态 服务名称 Application Management demand AppMgmt ASP.NET Stat ...