- 浏览: 160557 次
最新评论
-
bihongliang:
并且服务端一直报错:javax.bluetooth.Bluet ...
android 和 PC端 进行蓝牙通信 demo -
bihongliang:
你好,博主,我是windows10 64 位系统,加载了 64 ...
android 和 PC端 进行蓝牙通信 demo -
白云飘飘2016:
fcylf 写道win7 64位,pc端测试,报错:Nativ ...
android 和 PC端 进行蓝牙通信 demo -
fcylf:
win7 64位,pc端测试,报错:Native Librar ...
android 和 PC端 进行蓝牙通信 demo -
abc天残:
http://www.iteye.com/images/smi ...
android 从服务器下载更新新版本软件 demo
以"发送短信"功能 自定义插件
最终效果:
项目目录结构:
如何搭建android PhoneGap这里就不提及了。
首先,index.html中布局,并结合JQuery定义事件。
index.html
<!DOCTYPE HTML> <html> <head> <title>PhoneGap</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript" charset="utf-8" src="../js/jquery-1.7.1.js"></script> <script type="text/javascript" charset="utf-8" src="../js/phonegap.js"></script> <script type="text/javascript" charset="utf-8" src="../js/phonegap_messagePlugin.js"></script> <script type="text/javascript"> $(function(){ var onSend = function(){ //成功时执行该函数 var success = function(data){ alert("tel:" + data.target + "\ncontent:" + data.content); }; //失败时执行该函数 var error = function(e){ alert(e); }; var tel = $('#tel').val(); var content = $('#content').val(); //message: 自定义phonegap_messagePlugin.js中定义的 //send(...)函数: message对象的方法 window.plugins.message.send(success,error,tel,content); }; //发送按钮点击方法绑定 $('#send').bind('click',onSend); }); </script> </head> <body> <div id="messageDiv"> <input id="tel" type="tel" value="5556"/> <textarea id="content" rows="10" cols="25"></textarea> <button id="send" type="button">发送</button> </div> </body> </html>
接着,那么message从哪里来呢?
自定义一个Js文件用来处理我们自己的需要的逻辑
phonegap_messagePlugin.js
var Message = function() { }; Message.prototype = { send: function(success,error,target,content){ //调用MessagePlugin.java 的 send(...)方法 PhoneGap.exec(success,error,"MessagePlugin","send",[target,content]); } }; PhoneGap.addConstructor(function(){ //在PhoneGap中添加插件,注意要在plugins.xml中给它赋权限。 PhoneGap.addPlugin("message",new Message); });
所以,window.plugins.message.send(....);message其实就是指向这个Message对象,然后在调用它的send函数。
那么,MessagePlugin又指什么呢?
这里就开始插件类的编写了。
MessagePlugin.java
package com.royal.plugins; 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; /** * 自定义插件类---短信插件 * @author Royal * */ public class MessagePlugin extends Plugin{ private static final String SEND = "send"; @Override public PluginResult execute(String action, JSONArray data, String callbackId) { PluginResult result = null; if(SEND.equals(action)){ try { //手机号 String target = data.getString(0); //短信内容 String content = data.getString(1); //这里引入的是android.telephony.SmsManager SmsManager sms = SmsManager.getDefault(); //发送短信 sms.sendTextMessage(target, null, content, null, null); //封装信息返回给index.html的success(data)函数执行 JSONObject jsonObj = new JSONObject(); jsonObj.put("target", target); jsonObj.put("content", content); //执行成功结果 result = new PluginResult(PluginResult.Status.OK,jsonObj); } catch (JSONException e) { result = new PluginResult(PluginResult.Status.JSON_EXCEPTION); } }else{ //无效的执行 result = new PluginResult(PluginResult.Status.INVALID_ACTION); } return result; } }
所以,PhoneGap.exec(success,error,"MessagePlugin","send",[target,content]);这句代码
其中的MessagePlugin对应的就是上面的MessagePlugin.java这个类,send要对应匹配的就是MessagePlugin.java中execute里面的String action
最后将MessagePlugin.java这个插件类 在 xml/plugins.xml授权!
plugins.xml
<?xml version="1.0" encoding="utf-8"?> <plugins> <plugin name="App" value="com.phonegap.App"/> <plugin name="Geolocation" value="com.phonegap.GeoBroker"/> <plugin name="Device" value="com.phonegap.Device"/> <plugin name="Accelerometer" value="com.phonegap.AccelListener"/> <plugin name="Compass" value="com.phonegap.CompassListener"/> <plugin name="Media" value="com.phonegap.AudioHandler"/> <plugin name="Camera" value="com.phonegap.CameraLauncher"/> <plugin name="Contacts" value="com.phonegap.ContactManager"/> <plugin name="Crypto" value="com.phonegap.CryptoHandler"/> <plugin name="File" value="com.phonegap.FileUtils"/> <plugin name="Network Status" value="com.phonegap.NetworkManager"/> <plugin name="Notification" value="com.phonegap.Notification"/> <plugin name="Storage" value="com.phonegap.Storage"/> <plugin name="Temperature" value="com.phonegap.TempListener"/> <plugin name="FileTransfer" value="com.phonegap.FileTransfer"/> <plugin name="Capture" value="com.phonegap.Capture"/> <!-- 自定义plugin赋权限 --> <plugin name="MessagePlugin" value="com.royal.plugins.MessagePlugin"/> </plugins>
同样,既然是发短信,当然也要在AndroidManifest.xml 授权发送短信权限
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.royal.plugins" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <!-- PhoneGap权限 --> <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 发短信权限 --> <uses-permission android:name="android.permission.SEND_SMS" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".PhoneGap_messagePluginActivity" android:configChanges="orientation|keyboardHidden" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Ok,最后就这样了。 运行! 测试的时候再启动一个AVD咯。
总结:
注意其流程步骤,如何分离。
注意命名(包括各参数)。
理解这个自定义插件demo,可自定义自己需要的一些其他插件。
具体不用,理解即可。
该demo流程关联:
参考:http://gteam-yu.iteye.com/blog/1358707
发表评论
-
基于ZBar条形码、二维码扫描Demo
2015-07-29 15:08 2035Demo样式: -
左滑删除Demo
2015-07-29 14:48 716参考摘录:http://blog.csdn.net ... -
Fragment + ViewPager 底部菜单 demo
2015-07-17 17:33 634如附件 -
android googleMap key 的申请
2012-06-28 17:25 1203关于应用于android上 ... -
android phoneGap 静态页面中简单的数据传递
2012-06-27 17:14 2484最终效果: 主要采用方式: wi ... -
android PhoneGap JQuery Mobile Demo
2012-06-26 13:49 2950最终效果: 项目目录结构 ... -
android PhoneGap 入门
2012-06-08 09:57 973最终效果: 项目结构图: 需要用到Ph ... -
android 从服务器下载更新新版本软件 demo
2012-06-05 14:23 7703下面介绍的是apk如何进行版本的检测及下载更新! 最终 ... -
android Animation图片渐变动画 Demo
2012-05-11 15:47 3556最终实现效果: 项目目录结构: main.x ... -
android Preference Demo
2012-05-11 09:05 2114最终实现效果 ... -
android 可编辑的下拉框 Demo
2012-04-27 10:34 4244最终实现效果: 项目目录结构: EditDropdownT ... -
Android解析json数组对象
2012-04-13 16:07 5365android有自带的JSON解析 ... -
Android使用KSOAP2调用WebService出现java.lang.NoClassDefFoundError.的解决办法
2012-04-13 14:51 13211.把项目bin目录下的原先生成的apk先删除 2.最 ... -
基于CXF的webService本地数据交互----PC端与Android端(三)
2012-03-31 09:49 2444本篇基于(二)的基础上续写 主要是JSON的数据交 ... -
android所见即所得界面设计工具---droiddraw
2012-03-08 16:06 1505android所见即所得界面设计工具---droiddraw ... -
基于CXF的webService本地数据交互----PC端与Android端(一)
2012-02-27 17:02 37731.下载CXF(我下载的是2.4.6) http://cxf ... -
蓝牙移动体感
2012-02-24 09:36 1056那些年,那些你不知道也不需要知道的事。 -
android menu自定义菜单 Demo
2012-02-24 09:36 1860package com.ruibin.menu; imp ... -
andoid点击按钮(ImageButton)时改变按钮的背景图片 SelectorDemo
2012-02-24 09:36 5255主要是用到selector这个属性! 1. a ... -
android 和 PC端 进行蓝牙通信 demo
2012-02-24 09:37 18133前提: 1. 使用真机测试 2. ...
相关推荐
Phonegap自定义插件例子(Android) cordova3.4 详细课参阅我的博客: http://blog.csdn.net/xiaoluo5238/article/details/38711331
在"自定义plugin插件实现phonegap与Android交互"这个主题中,我们主要关注的是如何通过编写自定义插件来打通JavaScript和Android之间的通信壁垒。在PhoneGap中,Plugin是连接Web层和Native层的桥梁,它们是用Java...
总的来说,理解和解决PhoneGap和Cordova中的自定义插件问题需要对这两个框架的工作原理有深入的理解,同时也需要熟悉Android的开发环境。遵循上述步骤,你应该能够有效地创建、管理和修复自定义插件的问题。
在PhoneGap中,自定义插件是扩展这种功能的关键方式,尤其是当需要访问PhoneGap默认不支持或需要更深度集成的设备特性时。 在PhoneGap中创建自定义插件的步骤通常包括以下几个部分: 1. **结构设定**:首先,你...
这个"phonegap开发插件合集"是一个包含了多种PhoneGap插件的资源包,覆盖了Android和iOS等多个平台,为开发者提供更丰富的功能扩展。 首先,我们来看看"短信收发插件"。在移动应用中,发送和接收短信是一项常见的...
创建一个Cordova6.1与Android交互的自定义插件,首先需要熟悉Java和Android SDK,因为插件的实现部分将在Android项目中编写。你需要创建一个新的Android工程,包含一个继承自CordovaPlugin的类,并重写execute方法。...
PhoneGap通过插件系统将Web应用与设备API连接起来。 3. **jQuery Mobile**:jQuery Mobile是一个触屏优先的前端框架,专为移动设备设计。它简化了移动Web应用的创建,提供了统一的触摸友好的UI组件和交互效果。...
在Android中,GPS定位涉及到Android的Location API,因此我们需要创建一个自定义的PhoneGap插件来调用这些API。 二、Android Location API Android的Location API提供了获取设备位置的能力,包括GPS(全球定位系统...
- **插件的重要性**:由于PhoneGap提供的原生API有限,为了实现更复杂的功能,通常需要编写自定义插件。在Java层封装功能可以确保性能,而在JS层处理业务逻辑则简化了开发过程。 - **触摸事件支持**:PhoneGap对...
在Android平台上,如果需要集成支付宝支付功能,就需要用到特定的插件,这就是我们讨论的“PhoneGap/Cordova的支付宝Android插件”。 支付宝是中国最大的第三方支付平台,广泛应用于电子商务、线上支付等多个领域。...
在`FileOpener`压缩包中,可能包含的是这个插件的源码或者预编译版本,供开发者自定义或学习使用。了解其工作原理和结构有助于更有效地集成和定制插件功能。 总之,PhoneGap打开文档插件是使PhoneGap应用具备打开和...
4. **插件开发**:如果你需要自定义特定功能,你可以开发自己的PhoneGap插件。这涉及到编写JavaScript接口(通常位于`www`目录下的JS文件),以及对应的Android Java类,该类继承自CordovaPlugin,并重写`execute()`...
在`config.xml`中添加`<feature>`标签,确保PhoneGap知道这个插件,并将`Notification.java`添加到Android平台的源代码目录。 总的来说,这个压缩包包含了一个完整的PhoneGap插件,用于在Android应用中调用`Toast`...
在理解了PhoneGap的基础之后,开发者可以进一步学习如何创建自定义插件,以扩展PhoneGap的功能,满足更复杂的应用需求。同时,还可以探索Cordova插件库,那里有许多已经开发好的插件可供使用。 总之,"android之...
PhoneGap的扩展性体现在其插件系统上,开发者可以创建自定义插件来扩展其功能,覆盖更多原生API。由于PhoneGap是开源的,社区活跃,有丰富的插件和文档支持,因此在成熟度上具有较高保障。 **结合地图应用的思考** ...
在Android平台上,自定义插件的开发为PhoneGap应用扩展了无限的可能性,使开发者能够访问Android系统的所有功能,同时保持HTML5应用的开发效率和可移植性。这个具体的MD5加密插件示例是一个很好的起点,可以帮助...
"是针对Android平台的一个示例项目,特别适合在pad设备上运行,并且包含了自定义插件的实现,这对于深入理解和使用PhoneGap技术尤其有帮助。 1. **PhoneGap基础概念** - PhoneGap基于Apache Cordova,是一个让...
- 对于复杂的交互,可以考虑使用自定义插件,这样可以在JavaScript和Java之间创建更复杂的通信机制。 通过以上步骤,你就可以成功地在Android应用中集成PhoneGap,并实现它们之间的相互跳转和参数传递。这种方法...
了解如何创建自定义插件对于扩展PhoneGap应用的功能非常有用,特别是当需要的特性未被现有的公共插件覆盖时。 总的来说,PhoneGap插件是连接Web应用和移动设备硬件的桥梁,它们使开发者能够充分利用跨平台框架的...