Android四大组件之四大组件之Broadcast Receiver
Android四大组件之四大组件之Broadcast Receiver
作者:白璐
日期:2020/2/23
文章目录文章目录Android四大组件之Broadcast Receiver概述广播接收器(Broadcast Receiver)Broadcast Receiver简介Broadcast
Receiver的注册一. 静态注册二. 动态注册三. 本地广播发送Broadcast Receiver广播的三种发送方式常用的系统广播的action
和permission使用注意事项拓展学习1. Service组件和BroadcastReceiver实现组件通信2. 自定义私有权限
概述概述
Android应用程序是由下列应用程序是由下列4个组件构成,分别是:个组件构成,分别是:
活动程序(活动程序(Activity)
服务程序(服务程序(Service)
广播接收器(广播接收器(Broadcast Receiver))
内容提供器(内容提供器(Content Provider))
广播接收器(广播接收器(Broadcast Receiver))
Broadcast Receiver简介简介
BroadCastReceiver是Android的四大组件之一,主要功能就是发送消息,监听消息,然后根据业务进行逻辑处理,可以在应
用内部,也可以是应用之间使用。从应用内部的消息,数据传递这个功能来说,现如今有很多开源的框架可以实现,比如
EventBus 或者使用观察者模式自定义封装一个消息发送机制,也都挺好用的。
Broadcast Receiver的注册的注册
一一. 静态注册静态注册
写一个广播集成BroadcastReceiver
public class MyReceiver1 extends BroadcastReceiver {
public static final String ACTION1="com.example.liukang.mybroadcastprojrct.test";
@Override
public void onReceive(Context context, Intent intent) {
if (intent!=null){
String r1 = intent.getStringExtra("MyReceiver1");
Toast.makeText(context,"我接收到了"+r1,Toast.LENGTH_LONG).show();
Log.e("TAG",r1);
//abortBroadcast(); 有序广播时候,优先级高的可以接收,进行判断处理是否往下传递
}
}
}
在清单文件中注册一下:
//是否能接收其他APP发送的消息
//有序广播优先级使用,越大越高
发送广播:
Intent intent = new Intent();
intent.setAction("ACTION_RECEIVER"); //一定对应
intent.addCategory("category"); //不写即是默认 可以匹配;但是写了,那么清单文件MyReceiver1注册的必须得有,否则不通过
intent.setComponent(new ComponentName("com.example.liukang.mybroadcastprojrct",
"com.example.liukang.mybroadcastprojrct.MyReceiver1")); // Android 8.0之后必须指定包名,以及包名.类名
intent.putExtra("MyReceiver1", "MyReceiver1广播");
sendBroadcast(intent);
//sendOrderedBroadcast(intent,null); 发送有序广播
二二. 动态注册动态注册
写一个类继承
public class MyMainReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null) {
String main = intent.getStringExtra("main");