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的,就不在此描述了)。


更多相关文章

  1. Android程式编写及调试新手入门-3
  2. android SQLite数据库1
  3. Android(安卓)用groovy在gradle自定义字段方法实现一键切换versi
  4. Android(安卓)RecyclerView中ViewHolder的复用导致数据错乱解决
  5. android手机短信利器
  6. Visual Studio 跨平台开发实战--- Hello Xamarin! [Visual Studi
  7. 毕业设计_Android短信查询及加密系统_会话加密
  8. 【android】利用ContentObserver监听短信来获取验证码
  9. (迁移)android 上传短信乱码

随机推荐

  1. eclipse 创建android项目 无法启动
  2. Android(安卓)ListView的创建以及数据适
  3. android ListView添加事件并获取选中项的
  4. android开发流程
  5. 【Android(安卓)Studio】将一个Module直
  6. 【Android】使用SearchView时软键盘不支
  7. Android多分辨率自适应
  8. view xml
  9. Android获取文件夹路径 /data/data/
  10. Android源码下载,亲测可用,解决了repo下载