Android四大组件——BroadcastReceiver
一、注册BroadcastReceiver
1.1 动态注册
创建一个广播接收器继承自BroadcastReceiver,重写onReceive(context, intent)。定义intent-filter筛选需要监听的广播类型,并在活动中注册,通过调用registerReceiver(BroadcastReceiver, intent-filter) 将receiver与intent-filter绑定,不用时需要取消注册。
1.2 静态注册
可以在不启动应用程序时启用,exported表示是否允许BroadcastReceiver接收本程序之外的广播,enabled表示是否启用这个BroadcastReceiver。BroadcastReceiver内不允许开启线程,不能进行耗时操作。
二、发送Broadcast
2.1 自定义广播
- 发送标准广播:所有满足条件的BroadcastReceiver同时接收。
Intent intent=new Intent(“com.example.broadcasttest.MY_BROADCAST”);
sendBroadcast(intent);
- 发送有序广播:依次接收Broadcast,可以截断。
sendOrderedBroadcast(intent, String receiverPermission)
——其中,receiverPermission表示只有具备某一权限的receiver才能接收到广播。
可以在注册时在intent-filter标签中通过配置 android:priority 设置优先级。可以调用abortBroadcast() 截断广播
2.2 本地广播
需要通过LocalBoradcastManager实例进行广播的发送和注册。
- 获取LocalBoradcastManager实例:LocalBoradcastManager.getInstance();
- 注册:localBoradcastManager.registerReceiver(receiver, intentfilter),只能动态注册,只能在应用程序启动后BroadcastReceiver才能开始监听。
- 发送:localBoradcastManager.sendBroadcast(intent)
三、权限设置
3.1 发送端设置权限
- 发送端:在sendBroadcast()时通过设置receiverpermission来控制只有具备权限的应用才能去接收此广播;
- 接收端:需要声明并引用该权限
- 声明方式:在androidManifest.xml文件中通过<permission android:name=" "/>
- 引用方式:<uses-permission android:name=" "/>
3.2 接收端设置权限
- 接收端:在BroadcastReceiver注册时通过设置android:permission=" " 属性来控制只有具备该权限的应用才能访问该组件。
- 发送端:需要声明并引用该权限。