Phonegap插件编写注册与使用
2016-04-26 16:12
423 查看
一、 引入Phonegap文件
在我们的Android项目工程中,引入cordova-2.9.0.jar 这个jar包,版本可能不一样。在html页面,我们同样需要引入cordova.js这个文件,用于调用Android插件。
二、 在Eclipse中编写插件
在src文件夹下面新建一个包名,叫啥都可以,这里就新建一个叫com.tools. switchactivity的包名,在里面新建ToActivityPlugIn.java文件。然后打开ToActivityPlugIn.java,编写一个类继承CordovaPlugin,详细代码如下,这里实现的是在html页面跳转到Android原生Activity。
package com.tools.switchactivity; import org.apache.cordova.api.CallbackContext; import org.apache.cordova.api.CordovaPlugin; import org.json.JSONException; import android.content.Intent; public class ToActivityPlugIn extends CordovaPlugin { @Override //action 是在调用方法字符串,用于比对执行那个方法,rawArgs 是从html要传入的数据,callbackContext 是返回的内容,常用于返回调用成功或者失败 public boolean execute(String action, String rawArgs, CallbackContext callbackContext) throws JSONException { String CallbackJson = ""; try { if (action.equals("acToFaceAvtivity")) { try { Intent intent = new Intent().setClass(cordova.getActivity(), Class.forName("com.hhu.photo.family")); this.cordova.startActivityForResult(this, intent, 1); CallbackJson = "Ok"; } catch (ClassNotFoundException e) { // TODO Auto-generated catch block } } else if (action.equals("acToVideoActivity")) { try { Intent intent = new Intent().setClass(cordova.getActivity(), Class.forName("com.bvideoview.VideoPlayActivity")); this.cordova.startActivityForResult(this, intent, 1); CallbackJson = "Ok"; } catch (ClassNotFoundException e) { // TODO Auto-generated catch block } } } catch (Exception er) { ; } if (CallbackJson.length() > 0) { callbackContext.success(CallbackJson); } else { callbackContext.error("Error"); } return true; } }
三、 在Eclipse注册插件
上面我们就编写好了一个插件,用于在html跳转到Android原生Activity。编写完成插件后,在html页面使用之前,我们需要在Phonegap中注册一下这个插件,找到Android项目res文件夹下面的xml文件夹,打开config.xml文件。在plugin中加入如下代码,其中name的插件的名字,用于在JavaScript中申明要调用的插件,value是插件所在报名.类名。
<plugins> <plugin name="ActPlugin" value="com.tools.switchactivity.ToActivityPlugIn" /> </plugins>
四、 在JavaScript中使用
上面我们就写好并注册了一个Phonegap插件,接下来便是在html中使用,我们编写一个名叫NativeCall.js的JavaScript文件,在里面编写一个函数,代码如下在这函数中参数说明如下
aAction:与我们在编写插件的时候的action对应,用于表示你要调用哪一个方法
aData:要发送的数据,与插件中的rawArgs对应
aCallback:调用函数的结果,在插件中返回(一般是true或者false,或者自定义)
function doCallSwitchActivity(aAction, aData, aCallback) { try { var aOnCallback = function(aData) { if (aCallback != null) { try { aCallback(aData); } catch (e) {; } } } cordova.exec( function(success) { try { aOnCallback(success); } catch (Exc) {; } }, function(error) { try { aOnCallback(error); } catch (Exc) {; } }, "ActPlugin", //这个就是在xml中插件的那个name名字 aAction, //调用的方法 aData //发送的数据 ); } catch (Ex) {; } }
我们在需要调用的时候引入Native.js这个文件,使用这个函数即可,通常是绑定在一个组件中,当这个组件发生某个事件的时候,该函数被触发。
doCallSwitchActivity("acToFaceAvtivity", "aData", function(aData) { alert(aData) });
五、 结束
以上是Phonegap插件的编写调用与使用,欢迎批评指正,一起交流学习。相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories