`

phonegap插件编写升级

阅读更多

     个人博客原文链接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 {

}

 

0
0
分享到:
评论

相关推荐

    phonegap开发插件合集

    这个"phonegap开发插件合集"是一个包含了多种PhoneGap插件的资源包,覆盖了Android和iOS等多个平台,为开发者提供更丰富的功能扩展。 首先,我们来看看"短信收发插件"。在移动应用中,发送和接收短信是一项常见的...

    最新phonegap插件集合

    这些插件通常由开发者根据特定需求编写,用于访问设备功能,如摄像头、GPS定位、蓝牙、加速度计等,或者是集成第三方服务,如推送通知、社交媒体分享、支付接口等。 在“phonegap-plugins-master”这个压缩包中,...

    PhoneGap常用插件

    在"PhoneGap常用插件"这个主题中,我们将探讨PhoneGap生态系统中的一些重要插件,这些插件极大地扩展了PhoneGap的功能,使开发者能够更好地与设备的硬件功能进行交互。 1. **拨打电话插件**:这种插件允许用户通过...

    phonegap插件包Android版本

    在这个"phonegap插件包Android版本"中,我们主要关注的是如何在Android平台上利用PhoneGap开发应用,并集成特定的插件。 1. **PhoneGap框架介绍**:PhoneGap基于Apache Cordova,提供了一个统一的API接口,使得...

    支付宝快捷支付phonegap插件demo

    支付宝快捷支付PhoneGap插件Demo是一个专为移动应用开发者设计的解决方案,旨在简化在基于PhoneGap框架的应用中集成支付宝支付的过程。PhoneGap是一种流行的开源框架,它允许开发者使用HTML、CSS和JavaScript来构建...

    phonegap在线更新插件(android)

    对于这个在线更新插件,开发者应仔细阅读`README.md`,了解如何将插件集成到自己的PhoneGap项目中,以及如何配置和调用相关的JavaScript接口。 集成此插件的步骤可能包括以下几点: 1. **添加依赖**:在PhoneGap...

    PhoneGap iOS 自定义插件

    - 在`config.xml`文件中,添加插件的配置信息,确保PhoneGap知道如何加载和使用插件: ```xml ``` 4. **使用自定义插件** - 现在,你可以在你的PhoneGap应用的JavaScript代码中调用`PluginTest....

    PhoneGap插件扩展

    本教程将详细讲解如何扩展PhoneGap,实现JavaScript调用Native代码,以增强应用的功能。 首先,了解PhoneGap插件的基本结构至关重要。一个PhoneGap插件通常由两部分组成:JavaScript接口和Native代码。JavaScript...

    phonegap打开文档插件

    PhoneGap打开文档插件是移动应用开发中的一个重要组件,它允许开发者在PhoneGap应用程序中方便地查看和打开各种类型的文档。PhoneGap是一个基于HTML、CSS和JavaScript的框架,用于构建跨平台的原生移动应用。它利用...

    PhoneGap Camera插件调用 Demo下载

    在这个“PhoneGap Camera插件调用 Demo”中,我们将探讨如何实现拍照和从图库选择图片的功能。 首先,我们需要理解PhoneGap的工作原理。PhoneGap通过WebView将Web应用与设备的原生API连接起来,使得JavaScript可以...

    二维玛扫描phonegap插件

    二维玛扫描PhoneGap插件是移动应用开发中的一个重要工具,尤其在智能手机和平板电脑上,它使得用户能够通过摄像头快速读取和解析二维码(Quick Response Code)或条形码(Barcodes)。PhoneGap是一个跨平台的开发...

    phonegap2.9.0插件开发

    这个插件通常用于演示如何建立一个基本的PhoneGap插件,以及如何在JavaScript中调用它。它可能包含以下部分: - 原生代码:简单的操作,如显示一个对话框或日志输出,以证明JavaScript和原生代码之间的通信。 - ...

    phonegap plugins (插件集)

    了解如何创建自定义插件对于扩展PhoneGap应用的功能非常有用,特别是当需要的特性未被现有的公共插件覆盖时。 总的来说,PhoneGap插件是连接Web应用和移动设备硬件的桥梁,它们使开发者能够充分利用跨平台框架的...

    使用phonegap插件启动另一个Android Activity

    在本教程中,我们将深入探讨如何使用 PhoneGap 插件启动另一个 Android Activity。 首先,确保你已经准备好了 PhoneGap 的最新框架包,包括 `phonegap-x.x.x.jar`(添加到项目的 `libs` 目录)、`phonegap-x.x.x.js...

    Phonegap插件打开Activity

    这个PhoneGapPluginDemo应该包含了上述所有步骤的实现,你可以解压文件,查看源代码,学习如何将新Activity集成到PhoneGap应用中。通过这种方式,你可以扩展PhoneGap应用的功能,使其不仅仅局限于Web视图,还能充分...

    android PhoneGap 自定义插件

    这个特定的“android PhoneGap 自定义插件”是关于在Android平台上扩展PhoneGap功能的一个实例,通过编写自定义插件,开发者可以调用Android的本地API,实现更丰富的功能,比如访问硬件设备、系统服务等。...

    phoneGap插件应用

    4. **安装和使用插件**:将插件添加到PhoneGap项目后,通过`cordova plugin add &lt;path_to_plugin&gt;`命令安装。然后在你的JavaScript代码中,就可以直接调用插件提供的功能了。 关于压缩包中的文件: - `classes.dex...

    Phonegap在安卓平台上的插件开发

    在"Phonegap在安卓平台上的插件开发"这个主题中,我们关注的是如何在PhoneGap应用中创建自定义的插件,以便将前端HTML与Android的原生代码连接起来。具体来说,这个例子涉及到将一个字符串从前端传输到Android的原生...

    自定义plugin插件实现phonegap与Android交互

    在"自定义plugin插件实现phonegap与Android交互"这个主题中,我们主要关注的是如何通过编写自定义插件来打通JavaScript和Android之间的通信壁垒。在PhoneGap中,Plugin是连接Web层和Native层的桥梁,它们是用Java...

    百度移动广告联盟phonegap/cordova插件

    百度移动广告联盟phonegap/cordova插件,百度ssp广告phonegap插件,支持cordova和phonegap打包的ios和android应用,简单好用,只需要几行js就能在phonegap和cordova应用里面接入百度广告

Global site tag (gtag.js) - Google Analytics