Android4.4后短信机制的变化

原文:http://www.zhihu.com/question/22111420/answer/46388662

4.4 之前:
  • 新接收短信广播 SMS_RECEIVED_ACTION 为有序广播。任意应用可接到该广播并中止其继续传播。中止后优先级低的短信应用和系统短信服务将不知道新短信到达,从而不写进数据库。这样就做到了拦截(其实很多恶意应用也这么干)。
  • 任意应用都可以操作短信数据库,包括新建(含伪造收件箱和发件箱短信)、修改(含篡改历史短信)、删除。
  • 任意应用都可以发送短信和彩信,但默认不写进短信数据库,除非应用手动存入,否则用户是看不到的(配合拦截就可以安静地吸费了)。
4.4 及之后:
  • 设立默认短信应用机制,成为默认短信后的应用将全面接管(替代)系统短信服务。与设置默认浏览器类似,成为默认短信应用需要向用户申请。
  • 新接收短信广播 SMS_RECEIVED_ACTION 更改为无序广播,增加只有默认短信应用能够接收的广播 SMS_DELIVER_ACTION。二者的不同在于,当默认短信应用收到 SMS_DELIVER_ACTION 时它要负责将其存入数据库。任意应用仍然可以接收到 SMS_RECEIVED_ACTION 广播但不能将其中止。因此所有的应用和系统短信服务都可以接收到新短信,没有应用能够再用中止广播的方式拦截短信。
  • 只有默认短信应用可以操作短信数据库,包括新建(含伪造收件箱和发件箱短信)、修改(含篡改历史短信)和删除。其它应用只能读取短信数据库。默认短信应用需要在发送短信、收到新短信之后手动写入系统短信数据库,否则其它应用将读取不到该条短信。默认短信应用可以通过控制不写入数据库的方式拦截短信。
  • 任意应用仍然都可以发送短信,但默认短信应用以外的应用发短信的接口底层改为调用系统短信服务,而不再直接调用驱动通信,因此其所发短信会被系统短信服务自动转存数据库。此外,只有默认短信应用可以发送彩信。能不能发短信、发短信会不会被存入数据库,这一点安卓开发团队的博客发生过改动,导致网上出现了很多矛盾的说法。以上结论是自行验证所得。
共同点:
  • 任意应用都可以接收到短信数据库发生变化的广播,并可以读取全部短信数据库。
  • 任意应用都可以发送短信并接收短信回执。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值