个人博客原文链接:http://www.zeromike.net/?p=64
上一篇:写一个phonegap插件 中的例子已经可以作为开发时的一个参考,但是我们要使用注解的方式简化if/else调用方法,注解方式,请参考我的这篇 java注解方式进行反射。
1.MyPlugin的代码
package com.mike; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.apache.cordova.CallbackContext; import org.apache.cordova.CordovaPlugin; import org.json.JSONArray; import org.json.JSONException; public class MyPlugin extends CordovaPlugin { // 方法map private static final Map<String, Method> METHOD_MAP = new HashMap<String, Method>(); // 加载类 private static final List<Class<?>> LOADED_CLASS = new LinkedList<Class<?>>(); public MyPlugin() { if (!LOADED_CLASS.contains(getClass())) { for (Method method : getClass().getDeclaredMethods()) { MyAnnontion anno = method.getAnnotation(MyAnnontion.class); if (anno != null) { METHOD_MAP.put(method.getName(), method); } } LOADED_CLASS.add(getClass()); } } @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { Method mth = METHOD_MAP.get(action); if (mth != null) { try { mth.invoke(this, args, callbackContext); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } return true; } return false; } @MyAnnontion private void echo(JSONArray args, CallbackContext callbackContext) throws JSONException { String message = args.getString(0); if (message != null && message.length() > 0) { callbackContext.success(message); } else { callbackContext.error("Expected one non-empty string argument."); } } }
MyPlugin的构造函数在每次调用插件方法时进行调用,初始化数据。
2.MyAnnontion
package com.mike; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME)//表示注解的信息被保留在class文件(字节码文件)中当程序编译时,会被虚拟机保留在运行时 @Target(ElementType.METHOD)//说明该注解只能被声明在一个类的方法前 public @interface MyAnnontion { }
相关推荐
phonegap开发插件包,各个平台的都有,像什么短信收发插件,蓝牙控制插件等等,具体的看文件包吧
最新phonegap插件集合 包括安卓 ios等平台
PhoneGap常用插件 里面包括ios android等等 基本需要的插件都有 如拨打电话 上传图像等
支付宝快捷支付phonegap插件demo,项目使用phonegap又用到了支付宝,自测通过。
PhoneGap iOS 自定义插件
phonegap插件包Android版本 此代码是完全依赖PhoneGap的项目 此文件夹是为Android特定的插件。
使用phonegap框架开发android应用程序,免不了需要涉及js与java原生代码的交互,自定义phonegap插件可以满足这个需求。 在本教程中,介绍了怎么使用phonegap插件跳转到另一个Android Activity
自己写的一个PhoneGap Camera插件调用 Demo,实现拍照/图库获取图片功能,编译通过~~~具体实现我博客里面有
二维玛扫描phonegap插件,包括java代码,js代码,html代码
phonegap 打开文档插件 <script type="text/javascript" charset="utf-8" src="fileopener.js"></script>
在phonegap 2.2中配置好插件,该插件能打开一个新的Activity。仅供学习,为配置phonegap2.2插件环境头痛的同志贡献了
phonegap android在线更新插件,兼容android7.0下载后安装闪退的问题;详细使用见README.md文件。
百度移动广告联盟phonegap/cordova插件,百度ssp广告phonegap插件,支持cordova和phonegap打包的ios和android应用,简单好用,只需要几行js就能在phonegap和cordova应用里面接入百度广告
phonegap插件实现扫一扫功能.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
一个扩展PhoneGap使用js调用Native代码的实现
phonegap 微信共享插件
phonegap2.9.0插件
cordova-plugin-pingpp, Ping 支付 Cordova / PhoneGap 插件
phonegap扫描二位码插件,顺便给大家推荐phonegap扫描二维码的教程http://blog.csdn.net/u014646984/article/details/25655725,这篇博客写得比较详细,按照步骤可以搭建出扫描二维码的android程序
使用phonegap调用安卓插件实现GPS实时定位