论坛首页 移动开发技术论坛

Android Long SMS

浏览 1727 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-11-09  

Android Long SMS

 

SEND:

 

ap在发送long sms之前,会调用Framework的SmsManager的divideMessage()函数,将信息进行切分,然后sendMultipartTextMessage()判断是否为long sms,如果是调用sendMultipartText,以long sms的方式发送出去,否则为generic sms

 

 

RECEIVE:

 

接收到long sms的时候,SMSDispatcher会检查sms是否有header & header.ConcatRef,如果存在,则为long sms的part,交给processMessagePart函数去处理

 

processMessagePart函数的处理流程:

1.根据long sms的reference_number & address query出和当前part相关的part信息(From raw table)

2.比对信息数量,看是否已经接收到了所有的parts

2.1如果没接收到所有的parts,将当前的part存储到DB

2.2如果接收到所有的parts,取出所有相关parts的相关数据进行拼接,然后从DB中删除所有相关的parts,发送广播

 

 

PS:long sms的parts存在DB中的raw表中
    假如一条long sms被切分为两条parts,我们的device只接收到其中的一条part,由于generic sms的数据存储在sms表中,raw表中的残余part不会对generic sms造成影响,所有不做任何操作(保不齐哪天那条丢失的part神奇般的又出现了)

论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics