注册广播有几种方式,这些方式有何优缺点?请谈谈 Android 引入广播机制的用意。

在 android 下,要想接受广播信息,那么这个广播接收器就得我们自己来实现了,我们可以继承 BroadcastReceiver,就可以有一个广播接受器了。有个接受器还不够,我们还得重写 BroadcastReceiver 里面的 onReceiver 方法,当来广播的时候我们要干什么,这就要我们自己来实现,不过我们可以搞一个信息防火墙。具体的代码:
  1. public class SmsBroadCastReceiver extends BroadcastReceiver
  2. {
  3. @Override
  4. public void onReceive(Context context, Intent intent)
  5. {
  6. Bundle bundle = intent.getExtras();
  7. Object[] object = (Object[])bundle.get("pdus");
  8. SmsMessage sms[]=new SmsMessage[object.length];
  9. for(int i=0;i<object.length;i++)
  10. {
  11. sms[0] = SmsMessage.createFromPdu((byte[])object[i]);
  12. Toast.makeText(context, "来自"+sms[i].getDisplayOriginatingAddress()+" 的消息是:"+sms[i].getDisplayMessageBody(), Toast.LENGTH_SHORT).show();
  13. }
  14. //终止广播,在这里我们可以稍微处理,根据用户输入的号码可以实现短信防火墙。
  15. abortBroadcast();
  16. }
  17. }
当实现了广播接收器,还要设置广播接收器接收广播信息的类型,这里是信息:android.provider.Telephony.SMS_RECEIVED
我们就可以把广播接收器注册到系统里面,可以让系统知道我们有个广播接收器。这里有两种,
一种是代码动态注册:

  1. //生成广播处理
  2. smsBroadCastReceiver = new SmsBroadCastReceiver();
  3. //实例化过滤器并设置要过滤的广播
  4. IntentFilter intentFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
  5. //注册广播
  6. BroadCastReceiverActivity.this.registerReceiver(smsBroadCastReceiver, intentFilter);
一种是在AndroidManifest.xml中配置广播:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="spl.broadCastReceiver"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. <application android:icon="@drawable/icon" android:label="@string/app_name">
  7. <activity android:name=".BroadCastReceiverActivity"
  8. android:label="@string/app_name">
  9. <intent-filter>
  10. <action android:name="android.intent.action.MAIN" />
  11. <category android:name="android.intent.category.LAUNCHER" />
  12. </intent-filter>
  13. </activity>
  14. <!--广播注册-->
  15. <receiver android:name=".SmsBroadCastReceiver">
  16. <intent-filter android:priority="20">
  17. <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
  18. </intent-filter>
  19. </receiver>
  20. </application>
  21. <uses-sdk android:minSdkVersion="7" />
  22. <!-- 权限申请 -->
  23. <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
  24. </manifest>
两种注册类型的区别是:
1)第一种不是常驻型广播,也就是说广播跟随程序的生命周期。
2)第二种是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。

来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/zhuzhenfeng/p/4745226.html

Android:BroadcastReceiver的基础知识相关推荐

  1. Android技能树 — 树基础知识小结(一)

    前言: 现在安卓面试,对于数据结构的问题也越来越多了,也经常看到别人发的面试题都是问什么红黑树,二叉树查找等,所以我们虽然不会马上就会各种难的面试题,但起码树的基础知识还是要会的,这样才能去进一步学. ...

  2. Android 系统 wifi基础知识

    第3章 Wi-Fi基础知识 本章所涉及的源代码文件名及位置 ·wireless.h external/ kernel-headers/ original/ linux/ wireless.h ·dri ...

  3. Android技能树 — 树基础知识小结(一),kotlin开源项目

    根据上面的基础知识我画了一个归总的图(这样我就不需要写文字介绍了,啊哈哈): [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zd87TfMP-1637304075403 ...

  4. Android系统学习---基础知识

    目录 1.基础知识Android消息处理机制 android线程 方法一(创建线程) 方法二(创建线程)

  5. Android录音-音频基础知识

    音频基础知识 文章目录 音频基础知识 一.采样率 二.采样位深 三.比特率 四.声道(单声道.双声道) 五.PCM元数据 音频基本概念:采样率.采样位深.比特率.声道.PCM 一.采样率 采样率(也称 ...

  6. Android学习之基础知识十一 —运用手机多媒体

    一.使用通知(Notification) 通知(Notification)是Android系统中比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助 ...

  7. android Canvas 最基础知识总结

    学习Canvas 要先学习view 知识,这样才好学习 第一步 创建一个方法 让它继承 View 如下图 然后快捷键ait+/ 生成构造方法, 用来初始化View ,比如自定一个一些init()方法, ...

  8. CMake 构建项目Android NDK项目基础知识

    本篇文章将介绍如何使用 CMake 构建实现你的第一个 NDK 项目. ##前言 你好!欢迎来到我的的学习笔记分享系列,第一次给大家分享的是 Android NDK 开发的学习笔记,让我们先开始了解 ...

  9. Android自定义控件前导基础知识学习(一)——Canvas

    概述: 我们时常会遇到一些需要利用画图来实现的功能.例如一些常见的几何图形--点.直线.弧.圆.椭圆.文字.矩形.多边形.曲线.圆角矩形,总不能遇到 一个几何图形就用图片来代替吧.这样我们的手机肯定会 ...

最新文章

  1. 教师课堂教学必备的100个妙招,总有一个适合你!
  2. Python 工匠:善用变量来改善代码质量
  3. 世界公认最好的记忆方法_世界记忆大师:6种简单实用记忆方法,让孩子成为学霸中学霸...
  4. python菜鸟工具-Python3 教程
  5. oracle的高水位和低水位实验,Oracle 高水位问题
  6. JS跳转手机QQ的聊天页面
  7. 大学物理实验试卷1到8_试卷赠送199:七年级秋季学期期中检测地理试卷及答案...
  8. nvidia显卡对比分析
  9. linux aemv7,无法在我的Ubuntu machin中安装“xlwings”
  10. Redmi K50电竞版细节揭晓:金属中框+弹出式肩键2.0
  11. 为什么你的支付宝芝麻信用分就是不涨?
  12. PTA-基础编程题目集-7-2 然后是几点
  13. XML的四种解析器原理及性能比较
  14. 电商数据分析基础指标体系
  15. 计算机英语教学设计,英语教学设计doc范文精选
  16. 制作u盘启动盘对u盘有什么影响
  17. 随机生成姓名存入mysql_MYSQL随机生成姓名
  18. 免费图床(随时更新)
  19. java 项目中遇到的问题 和解决方案_Java开发遇到的问题及解决方案
  20. python音乐播放器

热门文章

  1. head.s 分析——Linux-0.11 学习笔记(三)
  2. 程序的加载和执行(三)——《x86汇编语言:从实模式到保护模式》读书笔记23
  3. ❤️你还在用visio画图吗?已经落伍啦!快来试试轻量级绘图神器draw.io吧!❤️
  4. jdk动态代理与cglib动态代理--InvocationHandler--MethodInterceptor
  5. docker启动nginx,并挂载目录及docker容器中文乱码
  6. 自平衡二叉树(Self-balancing binary search tree)
  7. 长连接/websocket/SSE等主流服务器推送技术比较
  8. 【IPFS + 区块链 系列】 入门篇 - IPFS + Ethereum (下篇)-ipfs + Ethereum 大图片存储
  9. Android 4.4 MediaRecorder系统结构
  10. JZOJ 3769. 【NOI2015模拟8.14】A+B