BroadcastReceiver 所对应的广播分两类: 普通广播 有序广播 普通广播 通过 Context.sendBroadcast() 方法来发送。它是完全异步的。 所有的receivers接收器的执行顺序不确定。 因此,所有的receivers接收器接收broadcast的顺序不确定。 这种方式效率更高。但是BroadcastReceiver 无法使用 setResult系列 getResult系列 abort系列API 有序广播 是通过 Context.sendOrderedBroadcast 来发送。所有的receiver依次执行。 BroadcastReceiver可以使用setResult系列函数结果传给下一个BroadcastReceiver,通过getResult系列函数来取得上个BroadcastReceiver返回的结果,并可以abort系列函数来让系统丢弃该广播让,使用该广播不再传送到别的BroadcastReceiver 可以通过在 intent-filter 中设置 android:priority 属性来设置receiver的优先级。优先级相同的receiver其执行顺序不确定。 如果BroadcastReceiver是代码中注册的话,且其intent-filter 拥有相同 android:priority 属性 的话,先注册的将先收到广播。

有序广播,即从优先级别最高的广播接收器开始接收,接收完了如果没有丢弃,就下传给下一个次高优先级别的广播接收器进行处理,依次类推,直到最后。

这里接收短信的广播是有序广播,因此可以设置你自己的广播接收器的级别高于系统原来的级别,就可以拦截短信,并且不存收件箱,也不会有来信提示音。

实现方法是:

<receiver android:name=".SmsReceiver" >   <intent-filter android:priority="100">    <action android:name="android.provider.Telephony.SMS_RECEIVED" />                       </intent-filter></receiver>

里面的android:priority="100"就是设定广播接收器的级别,这个值从1000~-1000,数值越大,优先级别就越高。


更多相关文章

  1. Android获取系统播放音乐信息
  2. 手机拨号启动隐藏程序
  3. android service 广播 更新 activity
  4. android 问题汇总系列之六
  5. Android源码中常用的系统广播
  6. 【 Android(安卓)10 系统启动 】系列 -- init(天字一号进程)
  7. android精要――BroadcastReceiver
  8. Android(安卓)Studio使用技巧系列教程(一)
  9. Android从无到有系列之:SpringBoot + Docker(一)

随机推荐

  1. 网络管理
  2. CSS实战flex布局仿京东app
  3. Python学习之pycharm的快捷键大全
  4. 20个基础函数的练习
  5. 换个角度看硅谷的前世今生三部曲之3- 展
  6. 印度硅谷?少来了,硅谷不是你想叫,想叫就能
  7. 面向目标 vs. 面向功能: 选择正确的Produ
  8. 三分钟带你读懂硅谷的过去、现在、和未来
  9. 海外最新的垂直市场水平化攻略
  10. 创新大师Steve Blank: 你真的知道什么是