个人博客原文链接: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插件的资源包,覆盖了Android和iOS等多个平台,为开发者提供更丰富的功能扩展。 首先,我们来看看"短信收发插件"。在移动应用中,发送和接收短信是一项常见的...
这些插件通常由开发者根据特定需求编写,用于访问设备功能,如摄像头、GPS定位、蓝牙、加速度计等,或者是集成第三方服务,如推送通知、社交媒体分享、支付接口等。 在“phonegap-plugins-master”这个压缩包中,...
在"PhoneGap常用插件"这个主题中,我们将探讨PhoneGap生态系统中的一些重要插件,这些插件极大地扩展了PhoneGap的功能,使开发者能够更好地与设备的硬件功能进行交互。 1. **拨打电话插件**:这种插件允许用户通过...
在这个"phonegap插件包Android版本"中,我们主要关注的是如何在Android平台上利用PhoneGap开发应用,并集成特定的插件。 1. **PhoneGap框架介绍**:PhoneGap基于Apache Cordova,提供了一个统一的API接口,使得...
支付宝快捷支付PhoneGap插件Demo是一个专为移动应用开发者设计的解决方案,旨在简化在基于PhoneGap框架的应用中集成支付宝支付的过程。PhoneGap是一种流行的开源框架,它允许开发者使用HTML、CSS和JavaScript来构建...
对于这个在线更新插件,开发者应仔细阅读`README.md`,了解如何将插件集成到自己的PhoneGap项目中,以及如何配置和调用相关的JavaScript接口。 集成此插件的步骤可能包括以下几点: 1. **添加依赖**:在PhoneGap...
- 在`config.xml`文件中,添加插件的配置信息,确保PhoneGap知道如何加载和使用插件: ```xml ``` 4. **使用自定义插件** - 现在,你可以在你的PhoneGap应用的JavaScript代码中调用`PluginTest....
本教程将详细讲解如何扩展PhoneGap,实现JavaScript调用Native代码,以增强应用的功能。 首先,了解PhoneGap插件的基本结构至关重要。一个PhoneGap插件通常由两部分组成:JavaScript接口和Native代码。JavaScript...
PhoneGap打开文档插件是移动应用开发中的一个重要组件,它允许开发者在PhoneGap应用程序中方便地查看和打开各种类型的文档。PhoneGap是一个基于HTML、CSS和JavaScript的框架,用于构建跨平台的原生移动应用。它利用...
在这个“PhoneGap Camera插件调用 Demo”中,我们将探讨如何实现拍照和从图库选择图片的功能。 首先,我们需要理解PhoneGap的工作原理。PhoneGap通过WebView将Web应用与设备的原生API连接起来,使得JavaScript可以...
二维玛扫描PhoneGap插件是移动应用开发中的一个重要工具,尤其在智能手机和平板电脑上,它使得用户能够通过摄像头快速读取和解析二维码(Quick Response Code)或条形码(Barcodes)。PhoneGap是一个跨平台的开发...
这个插件通常用于演示如何建立一个基本的PhoneGap插件,以及如何在JavaScript中调用它。它可能包含以下部分: - 原生代码:简单的操作,如显示一个对话框或日志输出,以证明JavaScript和原生代码之间的通信。 - ...
了解如何创建自定义插件对于扩展PhoneGap应用的功能非常有用,特别是当需要的特性未被现有的公共插件覆盖时。 总的来说,PhoneGap插件是连接Web应用和移动设备硬件的桥梁,它们使开发者能够充分利用跨平台框架的...
在本教程中,我们将深入探讨如何使用 PhoneGap 插件启动另一个 Android Activity。 首先,确保你已经准备好了 PhoneGap 的最新框架包,包括 `phonegap-x.x.x.jar`(添加到项目的 `libs` 目录)、`phonegap-x.x.x.js...
这个PhoneGapPluginDemo应该包含了上述所有步骤的实现,你可以解压文件,查看源代码,学习如何将新Activity集成到PhoneGap应用中。通过这种方式,你可以扩展PhoneGap应用的功能,使其不仅仅局限于Web视图,还能充分...
这个特定的“android PhoneGap 自定义插件”是关于在Android平台上扩展PhoneGap功能的一个实例,通过编写自定义插件,开发者可以调用Android的本地API,实现更丰富的功能,比如访问硬件设备、系统服务等。...
4. **安装和使用插件**:将插件添加到PhoneGap项目后,通过`cordova plugin add <path_to_plugin>`命令安装。然后在你的JavaScript代码中,就可以直接调用插件提供的功能了。 关于压缩包中的文件: - `classes.dex...
在"Phonegap在安卓平台上的插件开发"这个主题中,我们关注的是如何在PhoneGap应用中创建自定义的插件,以便将前端HTML与Android的原生代码连接起来。具体来说,这个例子涉及到将一个字符串从前端传输到Android的原生...
在"自定义plugin插件实现phonegap与Android交互"这个主题中,我们主要关注的是如何通过编写自定义插件来打通JavaScript和Android之间的通信壁垒。在PhoneGap中,Plugin是连接Web层和Native层的桥梁,它们是用Java...
百度移动广告联盟phonegap/cordova插件,百度ssp广告phonegap插件,支持cordova和phonegap打包的ios和android应用,简单好用,只需要几行js就能在phonegap和cordova应用里面接入百度广告