欢迎来到天天文库
浏览记录
ID:37151776
大小:223.50 KB
页数:11页
时间:2019-05-19
《Android开发学习教程—Android短信的收发及android模拟》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、引言前面我们介绍都只是如何发送SMS消息,接下来我们介绍如何接收SMS消息,及另一种发短信的方式并增强为可以发生图片等,最后介绍一下emulator工具。本文的主要内容如下:1~5见Android开发之旅:短信的收发及在android模拟器之间实践(一)6、温故知新之Intent7、准备工作:SmsMessage类8、SMS接收程序9、另一种发送短信的方式:使用Intent10、增强SMS为MMS6、温故知新之Intent此系列前面简单地接受过意图(Intent),这里再次简单介绍一下,在短信接收程序和使用Intent
2、发送SMS中我们要用到。android应用程序的三大组件——Activities、Services、BroadcastReceiver,通过消息触发,这个消息就称作意图(Intent)。下面以Acitvity为例,介绍一下Intent。Android用Intent这个特殊的类实现在Activity与Activity之间的切换。Intent类用于描述应用的功能。在Intent的描述结构中,有两个最重要的部分:动作和动作对应的数据。典型的动作类型有MAIN、VIEW、PICK、EDIT等,我们在短信接收程序中就用到从广播意
3、图中提取动作类型并判断是否是”android.provider.Telephony.SMS_RECEIVED”,进而作深一步的处理。而动作对应的数据则以URI的形式表示。例如,要查看一个人的联系方式,需要创建一个动作为VIEW的Intent,以及表示这个人的URI。通过解析各种Intent,从一个屏幕导航到另一个屏幕是很简单的。当向前导航时,Activity将会调用startActivity(“指定一个Intent”)方法。然后,系统会在所有已安装的应用程序中定义的IntentFilter中查找,找到最匹配的Inten
4、t对应的Activity。新的Activity接收到指定的Intent的通知后,开始运行。当startActivity()方法被调用时,将触发解析指定Intent的动作,该机制提供了两个关键的好处:Activity能够重复利用从其他组件中以Intent形式产生的请求。Activity可以在任何时候被具有相同IntentFilter的新的Activity取代。7、准备工作:SmsMessage类顾名思义,SmsMessage类是一个表示短信的类,为了更好地了解Android的短信机制及以后更好地编写短信相关程序,这里介绍
5、一下该类的公有方法和常量,及嵌套枚举、类成员。公有方法:publicstaticint[]calculateLength(CharSequencemsgBody,booleanuse7bitOnly)参数:msgBody-要封装的消息、use7bitOnly-如果为TRUE,不是广播特定7-比特编码的部分字符被认为是单个空字符;如果为FALSE,且msgBody包含非7-比特可编码字符,长度计算使用16-比特编码。返回值:返回一个4个元素的int数组,int[0]表示要求使用的SMS数量、int[1]表示编码单元已使用
6、的数量、int[2]表示剩余到下个消息的编码单元数量、int[3]表示编码单元大小的指示器。publicstaticint[]calculateLength(StringmessageBody,booleanuse7bitOnly)参数和返回值跟上面类似publicstaticSmsMessagecreateFromPdu(byte[]pdu)从原始的PDU(protocoldescriptionunits)创建一个SmsMessage。这个方法很重要,在我们编写短信接收程序要用到,它从我们接收到的广播意图中获取的字节
7、创建SmsMessage。publicStringgetDisplayMessageBody()返回短信消息的主体,或者Email消息主体(如果这个消息来自一个Email网关)。如果消息主体不可用,返回null。这个方法也很重要,在我们编写短信接收程序也要用到。publicStringgetDisplayOriginatingAddress()返回信息来源地址,或Email地址(如果消息来自Email网关)。如果消息主体不可用,返回null。这个方法在来电显示,短信接收程序中经常用到。publicStringgetEm
8、ailBody()如果isEmail为TRUE,即是邮件,返回通过网关发送Email的地址,否则返回null。publicintgetIndexOnIcc()返回消息记录在ICC上的索引(从1开始的)publicStringgetMessageBody()以一个String返回消息的主体,如果它存在且是基于文本的。publicSm
此文档下载收益归作者所有