一、广播分为标准广播有序广播,本地广播。Android内置了很多系统广播,我们可以监听这些广播来得到系统信息,如开机完成后的广播,电池电量变化广播等等。

标准广播:系统内广播,任何应用几乎同时收到

        有序广播(一般静态注册):系统内广播,应用按优先级分先后收到,先收到的广播接收器可切断该广播继续往下传播

        本地广播(只能动态注册):应用内广播,只能在应用内传播,安全性高,推荐使用

二、广播的俩种注册方式: 静态注册,动态注册,注册后必须在onDestroy()里取消注册广播接收器

不管是动态注册还是静态注册,若涉及到系统关键信息都需要在XML注册文件添加权限

如:

        //监听开机广播权限<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>对应的系统广播:android.intent.action.BOOT_COMPLETED//查询系统网络状态权限<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>      对应的系统广播:android.net.conn.CONNECTIVITY_CHANGE

静态注册:在XML注册文件里注册广播接收器和发送的广播,后定义广播接收类继承于BroadcastReceiver,重写

                       onReceive(Context context,  Intent intent)

格式:

         <receiverandroid:name=".广播接收器类名"><intent-filter><action android:name="自定义广播或系统广播" /></intent-filter></receiver>public class MyBroadcastReceiver extends BroadcastReceiver {public void onReceive(Context context, Intent intent) {Toast.makeText(context, "接收到标准广播",Toast.LENGTH_SHORT).show();abortBroadcast();}}

 动态注册:直接在Activity类里调用registerReceiver(BroadcastReceive,IntentFilter)方法发送广播,后定义广播接收

                        类继承于BroadcastReceiver,重写onReceive(Context context,Intent intent)

Activity补充方法 :

registerReceiver(BroadcastReceive,IntentFilter):注册广播接收器unregisterReceiver( BroadcastReceive):取消注册广播接收器sendBroadcast(Intent):发送标准广播sendOrderedBroadcast(Intent,null):发送有序广播,有序广播在intent-filter标签的android:priority    属性设置优先级,采用静态注册方式。abortBroadcast():在onReceive()里调用,用来截断有序广播

Intent补充知识:

​
Intent(String):String为被启动活动的XML文件里的<intent-filter>里的<action>里的android:name属性
值,在发送广播时String为系统广播或自定义广播,也就是<receiver>里的<intent-filter>里的<action> 里
的android:name属性值​

IntentFilter类:通过Intent的 <action>标签的android:name属性过滤掉不对应的广播

   方法:addAction(String):String为系统广播或自定义广播     
  动态提醒网络变化例子(记得添加权限和在Activity里注册广播接收器):public void onReceive(Context context, Intent intent) {Connectivity ManagerconnctivityManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo networkInfo=connctivityManager.getActiveNetworkInfo();if(networkInfo!=null&&networkInfo.isAvailable()) {Toast.makeText(context, "网络可用", Toast.LENGTH_SHORT).show();}else {Toast.makeText(context, "网络不可用", Toast.LENGTH_SHORT).show();}
}

三、本地广播发送(接收不到系统广播,即接收不到标准广播和有序广播,只能接收自己发送的自定义本地广播)

 1、 需要导入android-support-v4.jar包

Eclipse导入方法: 
        Project >> Properties >> Java Build Path >> Libraries >> Add External JARs 
        找到之前下载好的android-support-v4.jar,打开后可以看到已经添加进去列表中了,此时还需要点击 Order and Export,勾        选android-support-v4.jar 这一项,然后点击OK即可。 
        此时回到代码界面,按快捷键ctrl + shift + O即可自动导入LocalBroadcastManager。 
        也可以手动导入:

import android.support.v4.content.LocalBroadcastManager;

完成后LocalBroadcastManager 不再报错,ctrl + S保存并刷新MainActivity.java。

程序即可正常运行。

  2、与动态注册一样接收使用IntentFilter类和自定义广播接收类接收广播,不同点在于注册广播,发送广播,取消注册广播              都使用LocalReceiverManager类,不使用Activity类,但仍需写在Activity里.

 LocalBroadcastManager类用来发送广播有以下方法:LocalBroadcastManager.getInstance(this):静态方法,构建一个LocalBroadcastManager类实例registerReceiver(BroadcastReceive,IntentFilter):注册广播接收器unregisterReceiver( BroadcastReceive):取消注册广播接收器sendBroadcast(Intent):发送标准广播

转载于:https://www.cnblogs.com/MrQlyn/p/10236337.html

Android的广播接收器BroadcastReceiver相关推荐

  1. Android通过广播接收器BroadcastReceiver监听蓝牙连接变化

    上一篇介绍了通过广播对蓝牙的打开关闭等变化的监听,这一篇将对蓝牙连接状态的变化进行封装. 首先是广播接收器BlueToothConnectReceiver 类 import android.bluet ...

  2. android 蓝牙相关广播,Android通过广播接收器BroadcastReceiver监听蓝牙连接变化

    上一篇介绍了通过广播对蓝牙的打开关闭等变化的监听,这一篇将对蓝牙连接状态的变化进行封装. 首先是广播接收器BlueToothConnectReceiver 类 import android.bluet ...

  3. android注销广播接收器,使用广播接收器 - chuiyuan的个人页面 - OSCHINA - 中文开源技术交流社区...

    之前 的用Intent 在不同的Activity之间跳转,可以说是直接 Intent,因为指定 了明确 的目标. 广播则是相当于间接Intent. 间接intent就是没有指定具体目标的Intent, ...

  4. Android四大组件之广播接收器BroadcastReceiver

    Android系统的广播有一个全局监听器,专门用于监听/接收应用程序发出的广播消息. 广播的作用 可以实现不同组件之间的通信(这些组件可以是同一应用内的或不同应用内的.) 多线程通信 与Android ...

  5. Android AlarmManager广播接收器和服务

    In this tutorial, we'll be discussing AlarmManager and Broadcast Receiver and see how to trigger a B ...

  6. Android中广播接收者BroadcastReceiver详解

    1. 接收系统的广播步骤 (1)  新建一个类继承BroadcastReceiver 以监听sd卡状态的广播接收者为例 1 public class SdCardBroadcastReceiver e ...

  7. Android应用程序注冊广播接收器(registerReceiver)的过程分析

    前面我们介绍了Android系统的广播机制,从本质来说,它是一种消息订阅/公布机制,因此,使用这样的消息驱动模型的第一步便是订阅消息:而对Android应用程序来说,订阅消息事实上就是注冊广播接收器, ...

  8. Android 广播接收器注册与注销源码分析

    注册广播接收器 Android系统的广播机制是一种消息订阅/发布机制,因此,使用这种消息驱动模型的第一步便是订阅消息:而对Android应用程序来说,订阅消息其实就是注册广播接收器.在Android的 ...

  9. android oreo_Android Oreo隐式和显式广播接收器

    android oreo In this tutorial, we'll discuss the changes in Broadcast Receiver since Android Oreo. W ...

最新文章

  1. UE4场景设计学习教程
  2. 字符串操作(Java)
  3. Android Studio 新建项目的R文件丢失的解决方法
  4. vue-cli3打包注意路径的问题
  5. PS网页设计教程XXIX——如何在PS中设计一个画廊布局
  6. mysql-connector-java 6.x配置问题解决方案
  7. linux java services_在Linux上将Java应用程序作为服务运行
  8. Flutter 列表踩坑
  9. 百度站长俱乐部SEO提问收集-7
  10. 数据库课程设计报告总结
  11. Android日志分析工具的开发介绍
  12. 关于高斯-博内-陈定理
  13. Windows进程详解(完整版)
  14. 比赛推送:ML/NLP/推荐/CV,一大波比赛来袭!
  15. 8.14.2. Designing JSON documents
  16. 东辉职校计算机专业录取分数线,2016年上海东辉职校录取分数
  17. 文明重启战局服务器维护中是什么意思,文明重启为什么改了密码别人还能登?...
  18. Windows10 常用快捷键
  19. 【181008】VC++ 妙手连珠五子棋源码
  20. zabbix监控CPU温度

热门文章

  1. emacs haskell mode 在windows 下的配置
  2. 2008江西高考0分作文
  3. 步步为营,重构出模式(2)
  4. VMvare 桥接模式无法联网、没有未桥接的主机网络适配器,无法将网络更改为桥接状态。
  5. 信息系统项目管理01——信息化和信息系统
  6. Linux查看硬件信息命令大全
  7. 帆软报表插件开发之fine-decision中的ControllerRegisterProvider扩展
  8. 数据分析学习笔记—matplotlib折线图、条形图、直方图、饼状图基础绘制
  9. caj格式转pdf的3种方法
  10. elisa标准曲线怎么做_ELISA标准曲线制作方法.pdf