android短彩信收发流程(framework)

android短彩信收发流程(framework)

ID:6335830

大小:416.50 KB

页数:8页

时间:2018-01-10

android短彩信收发流程(framework)_第1页
android短彩信收发流程(framework)_第2页
android短彩信收发流程(framework)_第3页
android短彩信收发流程(framework)_第4页
android短彩信收发流程(framework)_第5页
资源描述:

《android短彩信收发流程(framework)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Android短彩信收发流程(Framework)短信部分:短信的发送,Framework部分从SmsManager的sendTextMessage(普通短信,无分段)与sendMultipartTextMessage(长短信,已分段)开始,一直到RIL。主要涉及到的类有。SmsManager、Isms、IccSmsInterfaceManager、SMSDispatcher、ImsSMSDispatcher、GsmSMSDispatcher、CdmaSMSDispatcher、SmsMessage、SmsTrac

2、ker、CommandsInterface、BaseCommands、RIL、LocalSocket、RilRequest、Parcel等。  SmsManager->RIL:sendTextMessage和sendMultipartTextMessage的过程其实差不多,无非是sendMultipartTextMessage对长短信进行了一下处理,为每一个part设置了SmsHeader。ImsSMSDispatcher中包含了两种不同的SmsDispatcher,IccSmsInterfaceManager调用

3、SmsDispatcher中各个方法时,会根据手机类型的不同,调用不同SmsDispatcher的相应方法。大致过程为:1、计算编码方式;2、对每一个分段构造SmsHeader、SubmitPdu、SmsTracker,并设置RadioTechnologyFamily;3、利用SmsTracker构造当消息正常发送后调用的Message对象;4、调用与手机卡类型有关的RIL中的相应方法发送。  RIL中发送:sendImsGsmSms、sendSms、sendCdmaSms、sendImsCdmaSms这四个方法基

4、本流程是大致相同的,都是先构造RILRequest,再调用send方法发送。区别就在于不同的方法在获得RILRequest时传入的请求类型不同,构造出来的pdu结构不同,以及两个Ims方法需要先往RILRequest中写入一个数字。  发送后的处理:已发送状态修改(sentIntent的调用过程)RILReceiver->SMSDispatcher:在RIL的构造方法中,创建了一个RILReceiver对象,该对象实现了Runnable接口。它的作用是不停地从下层获取数据,分析类型,转到相应SMSDispatche

5、r处理。当短信通过LocalSocket发送出去后,由于是主动请求,下层会传上来一个响应,其基本类型为RESPONSE_SOLICITED,转入processSolicited处理。在该方法中,对于短信发送的处理,均调用responseSMS方法获取SmsResponse对象。(前面四种方式对应的事件类型为sendSMS-RIL_REQUEST_SEND_SMS、sendCdmaSms-RIL_REQUEST_CDMA_SEND_SMS、sendImsGsmSms&sendImsCdmaSms-RIL_REQUES

6、T_IMS_SEND_SMS)然后创建AsyncResult对象,将SmsResponse对象与SmsTracker对象(SMSRequest中的)传入,更新之前在各个SMSDispatcher中创建的消息正常发送后调用的Message中的obj,设为创建的AsyncResult对象。将消息发送至相应SmsDispatcher处理。  已发送状态修改(sentIntent的调用过程)SMSDispatcher.handleMessage:由于之前在构造Message对象时设置了what为SEND_SMS_COMPL

7、ETE,因此,此处调用handleSendComplete方法进行短信发送的后续处理。若需要发送报告,将SmsTracker加入deliveryPendingList中,这样后面收到发送报告时,能够从该列表中取出进行处理(具体参见应用层部分发送报告的处理)。  deliveryIntent(发送报告)RIL->SMSDispatcher:对于GSM,在构造方法中,将GsmSMSDispatcher注册为RIL接收到发送报告时该事件的接收者,并设置消息类型为EVENT_NEW_SMS_STATUS_REPORT,相应

8、的Registrant类为mSmsStatusRegistrant。而对于CDMA,则设置消息类型为EVENT_NEW_SMS,相应的Registrant类为mCdmaSMSRegistrant。当RIL收到底层传来的发送报告后(过程与已发送状态修改相同),会产生一个基本类型为RESPONSE_UNSOLICITED,转入processUnsolicited

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。