转:http://blog.sina.com.cn/s/blog_5da93c8f010178zl.html

参考:http://blog.sina.com.cn/s/blog_80723de801014e2g.html
http://blog.csdn.net/jjaze3344/article/details/7259272
一、什么是广播?
在android里面有各种各样的广播,比如电池的使用状态,电话的接受和短信的接受都会产生一个广播,应用程序也可以接受广播并做出程序逻辑上的处理。
二、广播的类型
BroadcastReceiver所对应的广播分两类:普通广播和有序广播。
1、普通广播是完全异步的,可以在同一时刻(逻辑上)被所有接收者接收到,消息传递的效率比较高,但缺点是:接收者不能将处理结果传递给下一个接收者,并且无法终止广播Intent的传播。
普通广播通过Context.sendBroadcast()方法来发送,所有的receivers接收器接收broadcast的顺序不确定。这种方式效率更高,但是BroadcastReceiver无法使用setResult系列,getResult系列及abort系列API。
2、有序广播是按照接收者声明的优先级别,被接收者依次接收广播。如:A的级别高于B,B的级别高于C,那么广播先传给A,再传给B,最后传给C 。优先级别声明在 intent-filter 元素的android:priority 属性中,数越大优先级别越高。
可以通过在intent-filter中设置android:priority属性来设置receiver的优先级,优先级相同的receiver其执行顺序不确定。如果BroadcastReceiver是代码中注册的话,且其intent-filter拥有相同android:priority属性的话,先注册的将先收到广播。
有序广播的接收者可以终止广播Intent的传播,广播Intent的传播一旦终止,后面的接收者就无法接收到广播。
有序广播是通过Context.sendOrderedBroadcast来发送,所有的receiver依次执行。系统会根据接收者声明的优先级别按顺序逐个执行接收者,前面的接收者有权终止广播(BroadcastReceiver.abortBroadcast()),如果广播被前面的接收者终止,后面的接收者就再也无法获取到广播。
对于有序广播,前面的接收者可以将数据通过setResultExtras(Bundle)方法存放进结果对象,然后传给下一个接收者,下一个接收者通过代码:
Bundle bundle = getResultExtras(true))
可以获取上一个接收者存入在结果对象中的数据。

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

实现方法是:

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

里面的android:priority="2147483647",就是设定广播接收器的级别,intent-filter 标签中的 priority 是设置广播接收器的优先级,网上很多资料都表示,优先级的设置数值为1000~-1000,1000最大,但事实上,当 priority 值为integer 的最大值才时,才是优先级最高的,即  2147483647;当然,“最高”只是限于静态注册。

 两种注册BroadcastReceiver的方法:

  1.在应用程序的代码中进行注册
   注册:BroadcastReceiver

IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");

filter.setPriority(2147483647);

receiver=new BroadReceiver();

registerReceiver(receiver,filter);

取消注册BroadcastReceiver
    unregisterReceiver(receiver);

  2.在AndroidManifest.xml当中进行注册

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

转载于:https://www.cnblogs.com/li-fei/p/4321572.html

Android 广播机制以及用法详解 (转)相关推荐

  1. android tablayout 自定义,TabLayout用法详解及自定义样式

    TabLayout的默认样式: app:theme="@style/Widget.Design.TabLayout" 从系统定义的该样式继续深入: fill fixed 264dp ...

  2. Android Animation之ScaleAnimation用法详解

    ScaleAnimation用法详解 ScaleAnimation是Animation的子类,其有四个构造方法: 1.public ScaleAnimation(Context context, At ...

  3. android Handler机制之ThreadLocal详解

    概述 我们在谈Handler机制的时候,其实也就是谈Handler.Message.Looper.MessageQueue之间的关系,对于其工作原理我们不做详解(Handler机制详解). Messa ...

  4. Android中am命令用法详解

    Android中am命令用法 位于frameworks/base/cmds/pm am命令作用:管理Activity usage: am [start|broadcast|instrument|pro ...

  5. Android签名机制-签名过程详解

    目录 一.前言 二.准备知识 1.数据摘要 2.签名文件和证书 3.jarsign和signapk工具 4.keystore文件和pk8,x509.pem文件的区别 5.手动的签名Apk包 三.分析A ...

  6. Android的菜单栏Menu用法详解(超详细)

    菜单栏Menu用法讲解 菜单是Android应用中非常重要且常见的组成部分.能够极大的节省我们页面的使用空间,提高页面的利用率. 安卓常用的菜单有三种: OptionMenu:选项菜单,android ...

  7. 【Android 应用开发】Android - TabHost 选项卡功能用法详解

    TabHost效果图 : 源码下载地址 : http://download.csdn.net/detail/han1202012/6845105        . 作者 :万境绝尘  转载请注明出处  ...

  8. android shap,Android中Shape的用法详解

    ShapeDrawable是一种很常见的Drawable,可以理解为通过颜色来构造的图形,它既可以是纯色的图形,也可以是具有渐变效果的图形,ShapeDrawabled语法稍显复杂,如下所示: xml ...

  9. android搜索功能xml,Android_Android ActionBar搜索功能用法详解,本文实例讲述了Android ActionBar - phpStudy...

    Android ActionBar搜索功能用法详解 本文实例讲述了Android ActionBar搜索功能用法.分享给大家供大家参考,具体如下: 使用ActionBar SearchView时的注意 ...

最新文章

  1. idea导入gradle
  2. Future 模式介绍
  3. 界限的应用开发 HTML5,更高效地到达更多设备和用户
  4. java商城_java开源商城系统的优势是什么?
  5. 二分查找及一般拓展总结
  6. [转]win7-64位系统添加access的ODBC数据源 看不到其它数据源的问题
  7. Leetcode 687.最长同值路径
  8. 产品开发的生命周期管理
  9. 怎么用8uftp上传网站,利用8Uftp上传自己的网页只需8步
  10. MESHLAB安装教程
  11. MsgBox函数用法小结
  12. 海盗湾(The Pirate Bay)的战争——每一名技术人员都应该思考的问题
  13. Git 从入门到放不下
  14. 触摸板小红点失灵怎么办? - Thinkpad
  15. 机器学习:随机梯度下降法
  16. 开放式耳机哪个品牌好?南卡、韶音、索尼、Oladance开放式耳机推荐
  17. 01 基础入门:概念名词
  18. java中的直接内存
  19. 什么是OTG,手机OTG的用途
  20. 京东活动+自动运行脚本+签到2021.05.26更新

热门文章

  1. 【Android Developers Training】 81. 解析XML数据
  2. 【重温经典算法之二】快速排序
  3. SQL Server 2005/2008 导入导出数据常见报错
  4. 享受Android应用程序的Java技术盛宴
  5. numcpp速度对比_PHP和C++性能对比.pdf
  6. C++ 指针函数和函数指针
  7. 多少秒算长镜头_下中国象棋,能算多少步才算高手?
  8. 新手上路之django项目开发(二)-----引入静态文件
  9. 新疆计算机二级慨库,2020新疆维吾尔自治区计算机二级易考套餐:二级MS Office高级应用全程班(网课+题库+教材)...
  10. 西固哪家计算机学校好,兰州市西固区有什么技术学校和大学