十分钟开发一个调用Activity的PhoneGap插件
2014-08-10 18:57
337 查看
在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插件的文件夹结构。
![](http://img.blog.csdn.net/20140725091630562?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvb2ZmYnll/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
能够看到这个插件支持ios和android平台,包括源代码和图片资源,还是挺复杂的。
我们今天介绍的不会这么麻烦了,仅仅是简单的调用Activity,先看config.xml
一个cordova 插件就这么简单,大家能够轻松的从js调用activity了
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插件
- Android移动APP开发笔记——Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例
- Android移动APP开发笔记——Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例
- phonegap中java插件开发及javascript(js)调用java代码
- [Phonegap+Sencha Touch] 移动开发76 让cordova app访问远端网站也能调用cordova插件功能
- phonegap跳转Activity android插件调用原生
- phonegap3.4.x webservice插件开发实践-实现webservice调用
- Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例
- phonegap插件写法入门的一个很好的例子(发送短信调用的例子)
- [Phonegap+Sencha Touch] 移动开发76 让cordova app訪问远端站点也能调用cordova插件功能
- phoneGap开发IOS,JS调用IOS方法/phoneGap插件开发
- android开发phonegap时一个报ERROR:Unable to instantiate activity ComponentInfo
- Android开发教程之--在一个APK中调用另外一个APK的Activity
- 一个调试JSP的Eclipse插件的开发
- 基于JQUERY开发的一个JPAGE插件的修改版
- YSlow是yahoo美国开发的一个页面评分插件,非常的棒,从中我们可以看出我们页面上的很多不足,并且可以知道我们改怎么却改进和优化。
- Firefox插件开发(4)——XULRunner的一个例子
- Android 开发一个Activity 启动另一个Activity碰到的一个问题
- 开发一个调试 JSP 的 Eclipse 插件
- [iphone 开发学习笔记]Object-C和C语言最大的区别也是最大的扩展-----消息(即如何调用一个对象中的函数)