http://blog.csdn.net/avenleft/article/details/7383294
目前PhoneGap虽然提供了很多的API,但是我们也很容易发现,他有很多地方不能满足我们的需求,比如发短信。我也将介绍如何开发一个针对PhoneGap发短信的Plugin。(Android 版本)。
1、创建一个Android工程,创建之后的目录结构如图:
2、把PhoneGap的android版jar包、javascript和xml文件夹加入工程。(参照上一篇中的做法)目录结构:
3、新增一个类MessagePlugin
这个类就是负责发送短信功能的具体类,可以调用发送短信的android API,当然如果是其他功能,则调用相应的API,但是当使用这个API时记得申请权限。
具体代码:
- package com.phonegap.kiddyu.plugin;
- import org.json.JSONArray;
- import org.json.JSONException;
- import org.json.JSONObject;
- import android.telephony.SmsManager;
- import com.phonegap.api.Plugin;
- import com.phonegap.api.PluginResult;
- publicclass MessagePlugin extends Plugin {
- privatestaticfinal String SEND = "send";
- @Override
- public PluginResult execute(String action, JSONArray data, String callbackId) {
- PluginResult result;
- if (SEND.equals(action)) {
- try {
- JSONObject jsonObj = new JSONObject();
- String target = data.getString(0);
- String content = data.getString(1);
- SmsManager sms = SmsManager.getDefault();
- sms.sendTextMessage(target, null, content, null, null);
- jsonObj.put("target", target);
- jsonObj.put("content", content);
- result = new PluginResult(PluginResult.Status.OK, jsonObj);
- } catch (JSONException ex) {
- result = new PluginResult(PluginResult.Status.JSON_EXCEPTION);
- }catch(IllegalArgumentException ex){
- result = new PluginResult(PluginResult.Status.ERROR);
- }
- } else {
- result = new PluginResult(PluginResult.Status.INVALID_ACTION);
- }
- return result;
- }
- }
- package com.phonegap.kiddyu.plugin;
- import org.json.JSONArray;
- import org.json.JSONException;
- import org.json.JSONObject;
- import android.telephony.SmsManager;
- import com.phonegap.api.Plugin;
- import com.phonegap.api.PluginResult;
- public class MessagePlugin extends Plugin {
- private static final String SEND = "send";
- @Override
- public PluginResult execute(String action, JSONArray data, String callbackId) {
- PluginResult result;
- if (SEND.equals(action)) {
- try {
- JSONObject jsonObj = new JSONObject();
- String target = data.getString(0);
- String content = data.getString(1);
- SmsManager sms = SmsManager.getDefault();
- sms.sendTextMessage(target, null, content, null, null);
- jsonObj.put("target", target);
- jsonObj.put("content", content);
- result = new PluginResult(PluginResult.Status.OK, jsonObj);
- } catch (JSONException ex) {
- result = new PluginResult(PluginResult.Status.JSON_EXCEPTION);
- }catch(IllegalArgumentException ex){
- result = new PluginResult(PluginResult.Status.ERROR);
- }
- } else {
- result = new PluginResult(PluginResult.Status.INVALID_ACTION);
- }
- return result;
- }
- }
package com.phonegap.kiddyu.plugin; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.telephony.SmsManager; import com.phonegap.api.Plugin; import com.phonegap.api.PluginResult; public class MessagePlugin extends Plugin { private static final String SEND = "send"; @Override public PluginResult execute(String action, JSONArray data, String callbackId) { PluginResult result; if (SEND.equals(action)) { try { JSONObject jsonObj = new JSONObject(); String target = data.getString(0); String content = data.getString(1); SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(target, null, content, null, null); jsonObj.put("target", target); jsonObj.put("content", content); result = new PluginResult(PluginResult.Status.OK, jsonObj); } catch (JSONException ex) { result = new PluginResult(PluginResult.Status.JSON_EXCEPTION); }catch(IllegalArgumentException ex){ result = new PluginResult(PluginResult.Status.ERROR); } } else { result = new PluginResult(PluginResult.Status.INVALID_ACTION); } return result; } }
4、为phonegap增加一个javascript的API
在工程目录www/js下面增加一个javascript文件:phonegapPlugin.js,然后加入代码:
- var Message = function(){};
- Message.prototype = {
- send: function(success, error, target, content){
- PhoneGap.exec(success, error, "MessagePlugin", "send", [target, content]);
- }
- };
- PhoneGap.addConstructor(function() {
- PhoneGap.addPlugin("message", new Message());
- });
- var Message = function(){};
- Message.prototype = {
- send: function(success, error, target, content){
- PhoneGap.exec(success, error, "MessagePlugin", "send", [target, content]);
- }
- };
- PhoneGap.addConstructor(function() {
- PhoneGap.addPlugin("message", new Message());
- });
var Message = function(){}; Message.prototype = { send: function(success, error, target, content){ PhoneGap.exec(success, error, "MessagePlugin", "send", [target, content]); } }; PhoneGap.addConstructor(function() { PhoneGap.addPlugin("message", new Message()); });
关键的方法是PhoneGap.exec(success, error, "MessagePlugin", "send", [target, content]);
做一下简单的介绍:
success:方法执行成功时调用该函数;
error:方法执行失败时调用该函数;
"MessagePlugin":类名,最好与前面创建的Java类一个样;
"send":插件类中的参数String action;
[target, content]:一个数据,插件类中的参数JSONObject data;
PhoneGap.addPlugin("message", new Message());中的"Message"是你调用send方法时的实例名称。(不知道这样叫是否准确)
5、将自己的插件加入到PhoneGap的配置中
打开目录中res/xml/plugins.xml文件,在最后面加上
<plugin name="MessagePlugin" value="com.phonegap.kiddyu.plugin.MessagePlugin"/>
注意name要和你的插件类名一致! value是类的包名.类名。
插件到这里就算完成了,让我们测试一下到底能不能工作吧。
加入一个简单的html页面(上一篇已经介绍怎么开发,这里不做重复介绍),代码参照下面:
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv="Content-Type"content="text/html; charset=utf-8"/>
- <script type="text/javascript"charset="utf-8"src="../js/jquery_1_6_4.js"></script>
- <script type="text/javascript"charset="utf-8"src="../js/phonegap-1.2.0.js"></script>
- <script type="text/javascript"charset="utf-8"src="../js/phonegapPlugin.js"></script>
- <script type="text/javascript">
- $(function(){
- var onSend = function(){
- var success = function(data){
- alert("tel : " + data.target + ', and content : ' + data.content);
- };
- var error = function(e){
- alert(e);
- };
- var tel = $('#tel').val();
- var content = $('#content').val();
- window.plugins.message.send(success, error, tel, content);
- };
- $('#send').bind('click', onSend);
- });
- </script>
- </head>
- <body>
- <div id="messageDiv">
- <inputtype="tel"id="tel"value="5556"/>
- <textarearows="20"cols="25"id="content"></textarea>
- <buttontype="button"id="send">Send Me</button>
- </div>
- </body>
- </html>
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <script type="text/javascript" charset="utf-8" src="../js/jquery_1_6_4.js"></script>
- <script type="text/javascript" charset="utf-8" src="../js/phonegap-1.2.0.js"></script>
- <script type="text/javascript" charset="utf-8" src="../js/phonegapPlugin.js"></script>
- <script type="text/javascript">
- $(function(){
- var onSend = function(){
- var success = function(data){
- alert("tel : " + data.target + ', and content : ' + data.content);
- };
- var error = function(e){
- alert(e);
- };
- var tel = $('#tel').val();
- var content = $('#content').val();
- window.plugins.message.send(success, error, tel, content);
- };
- $('#send').bind('click', onSend);
- });
- </script>
- </head>
- <body>
- <div id="messageDiv">
- <input type="tel" id="tel" value="5556" />
- <textarea rows="20" cols="25" id="content"></textarea>
- <button type="button" id="send">Send Me</button>
- </div>
- </body>
- </html>
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" charset="utf-8" src="../js/jquery_1_6_4.js"></script> <script type="text/javascript" charset="utf-8" src="../js/phonegap-1.2.0.js"></script> <script type="text/javascript" charset="utf-8" src="../js/phonegapPlugin.js"></script> <script type="text/javascript"> $(function(){ var onSend = function(){ var success = function(data){ alert("tel : " + data.target + ', and content : ' + data.content); }; var error = function(e){ alert(e); }; var tel = $('#tel').val(); var content = $('#content').val(); window.plugins.message.send(success, error, tel, content); }; $('#send').bind('click', onSend); }); </script> </head> <body> <div id="messageDiv"> <input type="tel" id="tel" value="5556" /> <textarea rows="20" cols="25" id="content"></textarea> <button type="button" id="send">Send Me</button> </div> </body> </html>
注意在页面中加入你自己的phonegapPlugin.js,而且顺序必须在phonegap.js之后。
其他的都参照上一篇中,修改自己的Activity就开始测试吧!一下是测试截图:
相关推荐
标题《phoneGap移动开发实例英文经典》和描述提到的内容涉及了PhoneGap技术、英文版图书、以及实例案例。PhoneGap(现称为Apache Cordova)是一个开源的移动应用开发框架,允许开发者使用HTML、CSS和JavaScript来...
PhoneGap是一种跨平台的移动应用开发框架,它允许开发者使用HTML、CSS和JavaScript来构建原生的移动应用程序。...这个具体的MD5加密插件示例是一个很好的起点,可以帮助开发者理解PhoneGap插件开发的基本流程和原理。
7. **插件扩展**:如果`phonegap100_apidemo`包含了一些自定义插件,那么这表明PhoneGap还支持扩展功能,例如集成蓝牙、NFC或者推送通知等,开发者可以根据需求编写自己的插件。 通过学习和分析`phonegap100_...
5. **插件开发**:如果PhoneGap内置的API不能满足需求,你还可以开发自定义插件,将JavaScript代码与目标平台的原生代码连接起来。这样可以扩展PhoneGap的功能,实现更复杂的设备交互。 6. **打包与部署**:完成...
PhoneGap是一种跨平台的移动应用开发框架,它允许开发者使用HTML、CSS和JavaScript来构建原生的...通过深入研究这个例子,你将能更好地理解PhoneGap插件开发的过程,并且能够自己动手创建新的插件来满足特定的需求。
- 插件开发涉及`plugin.xml`文件配置、JavaScript接口定义以及原生代码实现,通过`cordova.exec()`方法在JavaScript和Java之间建立桥梁。 5. **datafenxilepad文件** - 这个文件可能是项目中用于数据分拣或分析的...
基于 Android 的 PhoneGap 实例一,主要涉及的是如何使用 PhoneGap 在 Android 平台上开发原生应用。下面我们将详细探讨相关的知识点。 1. **PhoneGap 框架**: PhoneGap 是 Apache Cordova 的商业版本,它提供了...
总之,"android之PhoneGap入门实例"是一个引导开发者进入跨平台移动开发的起点。通过这个实例,我们可以学习到PhoneGap的基本用法,包括项目的创建、设备API的使用以及应用的部署和测试。随着对PhoneGap的深入理解和...
总的来说,"PhoneGap例子"为我们提供了一个学习和实践PhoneGap开发的实例。通过这个例子,我们可以了解如何构建一个跨平台的应用,如何自定义插件来扩展功能,以及如何利用JavaScript和设备的原生功能进行交互。对于...
- 提供的"Sample"文件可能是一个实际的PhoneGap开发实例,包含了从创建基本页面结构到调用设备API的示例代码。 - 通过研究和运行这个样本,你可以更深入地理解PhoneGap的工作原理和实际应用。 通过学习和实践这些...
在Android中,GPS定位涉及到Android的Location API,因此我们需要创建一个自定义的PhoneGap插件来调用这些API。 二、Android Location API Android的Location API提供了获取设备位置的能力,包括GPS(全球定位系统...
总结来说,PhoneGap iOS的Web应用插件Demo是一个学习和实践PhoneGap插件开发的实例,通过PANativeBridgeDemo,开发者可以了解到如何创建、使用和管理自定义插件,以便在Web应用中充分利用iOS设备的功能。这样的实践...
PhoneGap插件提供了JavaScript接口,你可以调用`window.plugin.notification.local`的相关方法来创建、更新或取消通知。例如,创建一个简单的通知: ```javascript window.plugin.notification.local.add({ id: 1...
8. **plugins** - 插件目录,存放所有添加到项目中的Cordova/PhoneGap插件。 9. **assets** - 通常用于存放应用的其他资源,如音效、视频或配置文件。 10. **css** - 样式表文件夹,包含应用的CSS样式,可能有 ...
《PhoneGap实战》一共10章:第1章主要介绍PhoneGap的用途、与其他同类框架的比较,以及Web开发的入门知识;第2章详细讲解PhoneGap在各个移动平台上的安装与配置;...第10章介绍PhoneGap插件的使用。
6. **配置插件**:如果视频播放需要使用PhoneGap的插件,需要在`config.xml`文件中添加相应的插件声明,然后通过CLI安装插件。 7. **真机测试**:使用USB连接Android设备,通过Eclipse或Android Studio运行应用,...
这个资源包含PhoneGap的源代码,版本为Cordova2.9,以及相关的示例程序,这为我们深入理解PhoneGap的工作原理和开发流程提供了宝贵的材料。 Cordova2.9是PhoneGap的一个重要版本,它在那时提供了对多种移动操作系统...
7. **插件开发**:PhoneGap允许自定义插件,以扩展其功能。示例可能包含如何创建和使用自定义插件的教程。 8. **打包和发布**:如何将PhoneGap应用打包成各个平台的原生应用,并提交到应用商店。 通过这些实例,...
这个“PhoneGAP实战书内实例”压缩包提供了一些实际的项目案例,帮助我们深入理解如何使用PhoneGap进行跨平台开发。 1. **PhoneGap基础概念**:PhoneGap的核心是通过WebView(在Android和iOS中分别称为Chrome和...