我的博客网站:http://www.zeromike.net
本文地址:http://www.zeromike.net/?p=58
在使用phonegap或者说叫cordova进行hybrid开发的时候,肯定需要和原生代码进行交互,因此需要开发一个插件来完成两者之间的交互,下面我给出示意性代码。将建好的cordova项目导入eclipse中,我下一篇会写如何建立cordova项目。
插件开发链接:http://docs.phonegap.com/en/3.5.0/guide_hybrid_plugins_index.md.html#Plugin%20Development%20Guide
Warning:中文文档千万别看,还是繁体,编程用词和大陆相差比较大,貌似是台湾翻译的吧,看了变SB了。。。
需求:在客户端点击一个按钮,将一个字符串信息传到原生代码并通过回调方法显示出来。
1.在src目录中建立插件类
package com.mike; import org.apache.cordova.CallbackContext; import org.apache.cordova.CordovaPlugin; import org.json.JSONArray; import org.json.JSONException; public class MyPlugin extends CordovaPlugin { @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { if (action.equals("echo")) { String message = args.getString(0); this.echo(message, callbackContext); return true; } return false; } private void echo(String message, CallbackContext callbackContext) { if (message != null && message.length() > 0) { callbackContext.success(message); } else { callbackContext.error("Expected one non-empty string argument."); } } }
2.在res/confg.xml文件中加入
<feature name="App"> <param name="android-package" value="org.apache.cordova.App" /> </feature> <!-- 设备 --> <feature name="Device" > <param name="android-package" value="org.apache.cordova.device.Device" /> </feature> <!-- 添加自定义插件 --> <feature name="MyPlugin" > <param name="android-package" value="com.mike.MyPlugin"/> </feature>
3.在www/js/index.js文件中加入
var MyPlugin = function() { }; MyPlugin.prototype.service ='MyPlugin'; MyPlugin.prototype.exec = cordova.require('cordova/exec'); MyPlugin.prototype.sayHello = function(params,success) { this.exec(success, function(err) {success('Nothing to echo.');}, this.service, "echo", [params]); };
exec的执行方法参数介绍:
第一个参数 success:方法执行成功时调用该方法
第二个参数 方法执行失败时调用该函数,可自定义该方法
第三个参数 插件名称,保证和config.xml中的插件名称一致就行(feature的name)
第四个参数 插件类中的调用的方法名称
第五个参数 [target, content]:一个数据,插件类中的参数JSONObject data
4.在www/index.html代码
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="format-detection" content="telephone=no" /> <!-- WARNING: for iOS 7, remove the width=device-width and height=device-height attributes. See https://issues.apache.org/jira/browse/CB-4323 --> <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" /> <link rel="stylesheet" type="text/css" href="css/index.css" /> <meta name="msapplication-tap-highlight" content="no" /> <title>Hello World</title> </head> <body> <div class="app"> <h1>Apache CordovaHelelloo</h1> <div class="app"> <h1>Apache Cordova</h1> <input type="button" value="test" onclick="test();" /> </div> <script type="text/javascript" src="cordova.js"></script> <script type="text/javascript" src="js/index.js"></script> <script type="text/javascript"> var plugin = new MyPlugin(); function test(){ plugin.sayHello("zeromike", function(echoValue) { alert("hello,"+echoValue); }); } </script> </body> </html>
点击后结果:hello,zeromike
原文链接:http://www.zeromike.net/?p=58
原文作者:zeromike
相关推荐
phonegap开发插件包,各个平台的都有,像什么短信收发插件,蓝牙控制插件等等,具体的看文件包吧
最新phonegap插件集合 包括安卓 ios等平台
PhoneGap常用插件 里面包括ios android等等 基本需要的插件都有 如拨打电话 上传图像等
自己写的一个PhoneGap Camera插件调用 Demo,实现拍照/图库获取图片功能,编译通过~~~具体实现我博客里面有
使用phonegap框架开发android应用程序,免不了需要涉及js与java原生代码的交互,自定义phonegap插件可以满足这个需求。 在本教程中,介绍了怎么使用phonegap插件跳转到另一个Android Activity
PhoneGap iOS 自定义插件
支付宝快捷支付phonegap插件demo,项目使用phonegap又用到了支付宝,自测通过。
phonegap 打开文档插件 <script type="text/javascript" charset="utf-8" src="fileopener.js"></script>
phonegap插件包Android版本 此代码是完全依赖PhoneGap的项目 此文件夹是为Android特定的插件。
phonegap android在线更新插件,兼容android7.0下载后安装闪退的问题;详细使用见README.md文件。
一个扩展PhoneGap使用js调用Native代码的实现
在phonegap 2.2中配置好插件,该插件能打开一个新的Activity。仅供学习,为配置phonegap2.2插件环境头痛的同志贡献了
百度移动广告联盟phonegap/cordova插件,百度ssp广告phonegap插件,支持cordova和phonegap打包的ios和android应用,简单好用,只需要几行js就能在phonegap和cordova应用里面接入百度广告
phonegap插件实现扫一扫功能.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
phonegap 微信共享插件
二维玛扫描phonegap插件,包括java代码,js代码,html代码
phonegap2.9.0插件
phonegap扫描二位码插件,顺便给大家推荐phonegap扫描二维码的教程http://blog.csdn.net/u014646984/article/details/25655725,这篇博客写得比较详细,按照步骤可以搭建出扫描二维码的android程序
使用phonegap调用安卓插件实现GPS实时定位
Phonegap在安卓平台上的插件开发 一个前台html传string到native端经过md5处理后返回结果到前台html的例子