您的位置:首页 > 移动开发 > Android开发

Android群发短信草稿保存与发送机制

2011-08-04 15:23 232 查看
Android SDK中单条短信的目的地号码是存储在sms表中的addresses字段中的.

Draft中的短信也是如此,但是有所例外.

如果你保存一条多地址的群发短信草稿时,Android的Messaging程式会将此条短信草稿保存到sms表中,type=3,但是这条记录的address字段却是空的,非常诡异,也许是Messaging程式不容许address字段中出现“,”号,所以它将这条短信的多条地址分条保存到canonical_addresses表中。

比如这条短信是发送给“11111111111”,“2222222222”,“3333333333”,“44444444444”的一条草稿短信,那么Messaging程式将这条短信的4条地址分别存入canonical_addresses表中,假设形成了_id分别为1,2,3,4的4条canonical_addresses记录,那么这条短信对应的threads表中的recipient_ids字段为1
2 3 4(数字中间用空格隔开)。这样,一条多地址的短信就对应了1条threads记录和多条canonical_addresses记录。

那么已发送的或已接受的短信没有一条记录是以这样的形式存在的,所以在发送这条短信的时候,Messaging程式又对这种类型的短信加入了特殊的处理。

发送该短信的时候,首先threads和canonical_addresses表中的内容不变,删除sms中这条草稿短信的记录,并将这条短信分为内容相同但地址单一且各不相同的4条短信,这时,每条短信上的address字段有了数据,并且为上面4个地址中的某一个,而Messaging程式的UI显示上4条短信也还是在一个会话中的相同内容短信的重复4次的显示。

所以,从这里可以看出,Android机自带的Messaging程式是主要以threads表为中心进行动作的,也就是以会话模式作为短信聊天的运作方式,而不是传统的发件箱收件箱之类的方式(中国移动联合Borqs开发的Ophone操作系统内兼备了2种短信管理方式,当然,Ophone发送此类短信的方式也是有别于纯Android的,就不在此描述了)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: