官网的插件开发文档:http://cordova.apache.org/docs/en/latest/guide/hybrid/plugins/index.html

插件文件布局:

比如我在d盘新建了如下的布局

--src

--android

--alert.java

--www

--alert.js

plugin.xml

插件功能:

在前端点击一个按钮,提示alert.

文件内容:

关于plugin.xml文件内容设置可以参考这里http://cordova.apache.org/docs/en/latest/plugin_ref/spec.html

现在我的内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!--Licensed to the Apache Software Foundation (ASF) under oneor more contributor license agreements.  See the NOTICE filedistributed with this work for additional informationregarding copyright ownership.  The ASF licenses this fileto you under the Apache License, Version 2.0 (the"License"); you may not use this file except in compliancewith the License.  You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing,software distributed under the License is distributed on an"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANYKIND, either express or implied.  See the License for thespecific language governing permissions and limitationsunder the License.
--><plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"id="alert-plugin"version="1.0.0"><name>AlertPlugin</name><description>显示alert的插件</description><license>Apache 2.0</license><keywords>cordova,AlertPlugin</keywords><engines><engine name="cordova-android" version=">=3.6.0" /><!-- Requires CordovaPlugin.preferences --></engines><js-module src="www/alert.js" ><clobbers target="navigator.alert" /></js-module><!-- android --><platform name="android"><config-file target="res/xml/config.xml" parent="/*"><feature name="alert"><param name="android-package" value="com.alert"/><param name="onload" value="true"/></feature></config-file><source-file src="src/android/alert.java" target-dir="src/com" /></platform>
</plugin>

基础的不说,说下js-module,关于<clobbers>官网上是这样说的

  • <clobbers target="some.value"/> indicates that the module.exports is inserted into the windowobject as window.some.value. You can have as many <clobbers> as you like. Any object not available on window is created.

意思是,比如我www下的alert.js文件如下

var exec = require('cordova/exec');var alertPlugin = {show:function(success,error,message) {exec(success, error, "alert", "show", message);}
};module.exports = alertPlugin;

如果我这样配置的话

<js-module src="www/alert.js" ><clobbers target="navigator.alert" /></js-module>

意味着

navigator.alert就代表了alertPlugin

当我们调用alertPlugin.show方法的时候就等同于调用navigator.alert.show方法就行。

<source-file src="src/android/alert.java" target-dir="src/com" />

这个指明了核心类的名称,以及当android项目执行安装的时候,alert.java是会出现在src/com路径下的

 <feature name="alert"><param name="android-package" value="com.alert"/><param name="onload" value="true"/></feature>

value="com.alert"对应了android项目下的com.alert.java文件

<feature name="alert">中的alert和

 cordova.exec(function(winParam) {}, function(error) {}, "service", "action", ["firstArgument", "secondArgument", 42, false]);

中的service名字一样

对于alert.java,内容如下

public class alert extends CordovaPlugin {@Overridepublic boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {if (action.equals("show")) {String message = args.getString(0);this.echo(message, callbackContext);return true;}return false;}private void echo(String message, CallbackContext callbackContext) {if (message != null && message.length() > 0) {AlertDialog.Builder builder = new Builder(cordova.getActivity());builder.setMessage(message);builder.setTitle("提示");callbackContext.success(message);} else {callbackContext.error("Expected one non-empty string argument.");}}
}

注意show是和

cordova.exec(function(winParam) {}, function(error) {}, "service", "action", ["firstArgument", "secondArgument", 42, false]);

中的action名字是一样的。

插件分享在这个地址:

http://www.oschina.net/code/snippet_778987_53062

转载于:https://my.oschina.net/liangzhenghui/blog/549018

cordova自定义一个简单的alert的插件(android平台)相关推荐

  1. 组织结构图插件_一个简单直接的组织结构图插件

    组织结构图插件 Vue-orgchart (vue-orgchart) It's a simple and direct organization chart plugin. Anytime you ...

  2. 在Kubernetes上部署一个简单的、类PaaS的平台,原来这么容易!

    作者 | Bram Dingelstad 译者 | 弯月 责编 |徐威龙 封图| CSDN下载于视觉中国 我们都遇到过这种情况:有人发现了一个bug,然而这不是一般的软件bug,甚至都不是通常意义上的 ...

  3. easyopen——一个简单易用的接口开放平台

    摘要: 一个简单易用的接口开放平台,平台封装了常用的参数校验.结果返回等功能,开发者只需实现业务代码即可. easyopen介绍 一个简单易用的接口开放平台,平台封装了常用的参数校验.结果返回等功能, ...

  4. Kotlin自定义一个简单实用的标题栏

    标题栏是每个APP必不可少的一部分,通过它我们可以实现导航以及添加一些操作事件等等.下面分享一个我常用的标题栏控件. 先来说一下大概的思路吧,考虑到标题栏一般具有比较多的控件,例如左右的图标按钮或者文 ...

  5. 【Unity3d】 教会你如何做一个简单的电梯系统(升降平台)

    博主第一次写博客,语言略俗,有不足之处还请指正! 由于自己还处在unity小白阶段,受2d升降平台的影响(后续我也会上传关于2d升降平台的文章),突发奇想如何用3d做一个电梯系统,查阅网上资料后,发现 ...

  6. 一个简单易用的容器管理平台-Humpback

    什么是Humpback? 项目开源地址在此: Humpback Source,觉得有用或者有趣,欢迎给个star~ 在回答这个问题前,我们得先了解下什么的 Docker(哦,现在叫 Moby,文中还是 ...

  7. docker一个简单易用的容器管理平台-Humpback

    什么是Humpback? 项目开源地址在此: Humpback Source,觉得有用或者有趣,欢迎给个star~ 在回答这个问题前,我们得先了解下什么的 Docker(哦,现在叫 Moby,文中还是 ...

  8. ##自定义一个自动注入Log 的 插件

    写一个Plugin 创建一个配置类 通过Transfrom Api 注入配置 扫描包名通过ASM注入到class中 gradle插件的方法请自行查阅百度: 创建一个dsl,传入要插入的方法的信息,注入 ...

  9. Django自定义一个简单的中间件,并使用此中间件

    1.在最近做的项目中,需要每个页面访问的时候判断是否登录,没登录的话就跳转到登录页面,因此抽出个公共方法,并自定义个中间件是很有必要的,这样就可以用注解方式去使用这个自定义的中间件,就如Django自 ...

最新文章

  1. Linux下的find的使用方法
  2. idea console中文乱码_Python3的字符编码乱码问题解决思路
  3. FastDFS服务重启
  4. JAVA里16进制和字节数组互转
  5. 时间转年月日_编程中常见的时间格式
  6. 使用百度链的智能合约来落地公司业务场景
  7. FileZilla软件下载使用简易教程
  8. SAP License:按BOM进行原料耗用拆分-模拟面包制造
  9. java连接数据库的5种方式
  10. [渝粤教育] 西安工业大学 汉语文字学 参考 资料
  11. 人大金仓数据库登录、查看数据库
  12. 固体火箭发动机装药拓扑优化(观点)
  13. 哔哩哔哩服务器在哪个文件夹,哔哩哔哩在手机哪个文件夹
  14. html幻灯片图片切换效果代码,jquery的幻灯片图片切换效果代码分享
  15. 初学者应从文件目录结构理解import的过程,并创建自已的代码库
  16. web语意化的深入理解
  17. 韩服17+苹果ID验证
  18. kankan转载:anddroid卡牌效果实现
  19. 输电线路导线舞动预警装置
  20. 云灾备方案,让企业无忧数据灾难

热门文章

  1. Ubuntu下Qt中使用pcl库
  2. C语言 指针在函数传参中的使用
  3. JavaScript学习笔记之 数组方法一 堆栈 和队列
  4. 实验一 OpenGL初识
  5. 软件工程的瀑布, 大泥球, 教堂,集市,和银弹
  6. 一次Oracle数据迁移
  7. [C++程序设计]指针总结
  8. J2ME_System.getProperty
  9. summary+plan
  10. java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL,spring获取context