十分钟开发一个调用Activity的PhoneGap插件

在HybridApp开发中,非常多业务我们是没有办法通过HTML5+js实现的,比方调用第三方的包括Activity的jar包,一些必须使用原生代码才干实现的功能,比方复杂的UI的效果,调用通讯相关的协议栈,第三方支付sdk等。这样的情况我们须要通过写cordova插件的方式,包装android原生代码为插件,供上层javascript调用。本文解说一个调用Activity并返回Activity结果的cordova插件样例,帮助大家掌握cordova plugin的开发 。

Cordova插件是通过cordova plugin add (插件包名须要在cordova plugins官方注冊,或插件代码存放的git地址)加入,通过cordova plugin rm 插件包名删除。一个插件主要文件包含插件配置文件plugin.xml,插件描写叙述文件package.json,平台相关的资源和源代码,能够包含图片,xml,java源代码,jar包,so静态库等。以下是我做的android图案锁屏cordova插件的文件夹结构。

插件文件夹结构

能够看到这个插件支持ios和android平台,包括源代码和图片资源,还是挺复杂的。

我们今天介绍的不会这么麻烦了,仅仅是简单的调用Activity,先看config.xml

配置文件config.xml代码

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

<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
    id="com.qianmi.cordova.demoapp"
    version="0.0.3">
    <name>DemoPlugin</name>
    <description>Qianmi <span style="font-family: Arial, Helvetica, sans-serif;">DemoPlugin </span><span style="font-family: Arial, Helvetica, sans-serif;"> Plugin</description></span>
    <license>Apache 2.0</license>
    <keywords>Qianmi,<span style="font-family: Arial, Helvetica, sans-serif;">DemoPlugin</span><span style="font-family: Arial, Helvetica, sans-serif;"></keywords></span>

  <js-module src="www/demo.js" name="demo">
    <clobbers target="cordova.plugins.demo" />    <!--js中调用的名字啊 -->
  </js-module>

    <!-- android -->
    <platform name="android">

        <config-file target="res/xml/config.xml" parent="/*">
            <feature name="DemoApp">
                <param name="android-package" value="com.qianmi.cordova.demoapp<span style="font-family: Arial, Helvetica, sans-serif;">" /></span>

            </feature>
        </config-file>

        <source-file src="src/android/DemoApp.java" target-dir="src/com/qianmi/cordova/demoapp /></span>

    </platform>

</plugin>

插件www/js的代码

var argscheck = require('cordova/argscheck'),
    utils = require('cordova/utils'),
    exec = require('cordova/exec');

var DemoApp = function () {
};

//ExitApp
<pre name="code" class="javascript">DemoApp<span style="font-family: Arial, Helvetica, sans-serif;">.exit = function () {</span>

console.log(‘----exit‘); exec(null, null, "DemoApp", "demoAction", [null, null, null]);};module.exports = DemoApp;


插件java代码

重点的插件java代码(仅仅是演示样例啊,不完整的)给Activity传值,接受返回结果,回传给js都在这里了

public class LockPattern extends CordovaPlugin {
	private static final String TAG = "LockPattern";

	private static final String NICK_NAME = "nickName";
	private static final String MODE = "mode";

	public static final int REQUEST_CODE_SET_LOCK_PATTERN = 10001;
	public static final int REQUEST_CODE_VERIFY_LOCK_PATTERN = 10002;

	private CallbackContext mCallbackContext;

	@Override
	public boolean execute(String action, JSONArray args,
			CallbackContext callbackContext) throws JSONException {
		Log.i(TAG, action + "   " + args);
		mCallbackContext = callbackContext;

						Intent intent = new Intent().setClass(
								cordova.getActivity(),
								LockPatternActivity.class);
						intent.putExtra(MODE, LockPatternActivity.MODE_STEP_1);
						intent.putExtra(NICK_NAME, nickName);
						this.cordova.startActivityForResult(this, intent,
								REQUEST_CODE_SET_LOCK_PATTERN);

		return false;
	}

	@Override
	public void onActivityResult(int requestCode, int resultCode, Intent data) {
		Log.i(TAG, "---onActivityResult:" + requestCode + "   " + resultCode);

		switch (requestCode) {
		case REQUEST_CODE_SET_LOCK_PATTERN:
			if (Activity.RESULT_OK ==  resultCode && null != mCallbackContext) {
				mCallbackContext.success(LockPatternUtils.loadFromPreferences(cordova.getActivity()));
			}
			break;

		}
	}

}

一个cordova 插件就这么简单,大家能够轻松的从js调用activity了

十分钟开发一个调用Activity的PhoneGap插件,布布扣,bubuko.com

时间: 2024-12-23 14:34:48

十分钟开发一个调用Activity的PhoneGap插件的相关文章

利用MyEclipse开发一个调用webservice接口的程序

上一篇文章我们已经学习了如何使用Java 工具MyEclipse开发一个webservice接口,那么接口开发好了如何调用?接下来我们就来解决这个问题. 1:首先随便创建一个Java project选中--New  Webservice Client 2:选中JAX-WS,下一步 3:在WSDL URL里面写入接口的测试地址 ↓接下来WSDL VAlidation竟然报错了,如何解决请往下看 把localhost换位主机IP地址 下一步 ,OK 通过通过验证 客户端会默认给我们选中需要导入的包

十分钟写一个简单的docker

我在这个视频(http://pan.baidu.com/s/1c0fKOtM)里介绍了容器虚拟化的原理,主要有三个方面:资源隔离,命名空间隔离,运行环境隔离.这些东西都是linux本身就有的功能,只需要写一个shell脚本,就能实现一个简单的虚拟机,和docker类似. 代码如下: #!/bin/bash #用法:mydocker.sh $root_dir $ip_addr $cpu_us(每秒钟CPU使用的us数) #例如: sh mydocker.sh /images/fedora/ 192

软工第一个程序:像二柱子那样,花二十分钟写一个能自动生成小学四则运算题目的 “软件”,要求:除了整数以外,还要支持真分数的四则运算。

程序设计思想 本程序的设计主要基于对C/C++中产生随机数的应用,在产生算数符号部分主要采用了switch语句,通过随机产生0-3的数值来随机产生"+-*/"字符,并进行相应的处理:在处理整数操作部分时,使用try/throw语句,避免除法分母为0,语句采用一维数组,记录答案结果:在处理真分数部分,采用while语句产生合理的真分数,采用二维数组记录答案结果. 程序源代码 #include<iostream.h> #include<stdlib.h> #incl

Android移动APP开发笔记——Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例

引言 Cordova(PhoneGap)采用的是HTML5+JavaScript混合模式来开发移动手机APP,因此当页面需要获取手机内部某些信息时(例如:联系人信息,坐标定位,短信等),程序就需要调用手机内部的API跟页面进行信息交换.Cordova 特别为此定制了完善的解决方案,以方便用户进行程序编辑.在这一章里将为大家逐一介绍Cordova与Actitity通讯的实现原理. 目录 一.CordovaPlugin类简介 二.页面通过 cordova.exec 函数调用 CordovaPlugi

十分钟使用ionic Framework开发一个跨平台移动应用

Ionic是一个前端的框架,帮助开发者使用HTML5, CSS3和JavaScript做出原生应用.ionic的理念类似前端开发的BootStrap,目标是封装HTML5移动跨平台开发的最佳实践,就像Twitter Bootstrap在前端开发中做的一样.Ionic框架目前发展很迅速,我们从2014年3月开始使用,当时是1.0.0beta2,现在已经更新到1.0.0beta10,大概每2个星期会出一个beta版本,并且都包含实质性更新.Ionic框架很先进,js部分是基于AngularJS框架,

Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例

引言 Cordova(PhoneGap)采用的是HTML5+JavaScript混合模式来开 发移动手机APP,因此当页面需要获取手机内部某些信息时(例如:联系人信息,坐标定位,短信等),程序就需要调用手机内部的API跟页面进行信息交换. Cordova 特别为此定制了完善的解决方案,以方便用户进行程序编辑.在这一章里将为大家逐一介绍Cordova与Actitity通讯的实现原理. 目录 一.CordovaPlugin类简介 二.页面通过 cordova.exec 函数调用 CordovaPlu

十分钟掌握Activity的生命周期与启动模式

1. Activity的生命周期 正常情况下的Activity生命周期如下图所示(来自Android Developer): 当资源相关的系统配置变更时(比如设备屏幕方向改变,键盘可见性变化),会导致Activity的销毁与重建.某些系统配置变更时,系统会根据最新配置重新为应用加载适合于当前配置的资源,这些系统配置就是资源相关的系统配置.此时在销毁Activity前会调用onSaveInstance()方法已保存当前的状态信息,这个方法会在onStop()前被调用,但与onPause()的时序关

Android开发中在一个Activity中关闭另一个Activity

Android开发中在一个Activity中关闭另一个Activity 比如有ActivityA, ActivityB,在ActivityB中关闭ActivityA 解决方案: 1. 在 ActivityA 里面设置一个静态的变量instance,初始化为this在 ActivityB 里面, ActivityA.instance.finish(); 2. 也可以通过ActivityManager ActivityManager manager = (ActivityManager)getSys

Get了这个外挂级神器,一个小时的工作我竟然十分钟就做完了

经常使用PPT的朋友们有没有发现,其实PPT功能并不算强大,只能做一些简单的操作,每次做PPT都会因为素材资源和设计的问题浪费很多时间,不知不觉上班时间都过去啦. 有一个PPT插件叫iSlide,堪称外挂级神器!相信我,它可以解决你的大多数PPT难题,不用再羡慕别人早早下班啦,你也可以十分钟做完一个小时的工作内容!下面我们一起来详细了解这个神器吧. iSlide是一个全面型的实用插件,几乎涉及到了PPT制作的方方面面,它号称"让PPT设计简单起来",不管你是什么级别,它都可以让你玩转P