理解广播与广播接收器
广播事件处理属于 系统级的事件处理(一般事件处理属于View级的事件处理)
Context
- sendBroadcast(Intent intent):发送广播
- sendOrderedBroadcast(Intent intent):发送有序广播
- (动态注册)
- registerReceiver(receiver,intentFilter):注册广播接收器
- unRegisterReceiver(receiver):解注册广播接收器
BroadcastReceiver
- onReceive(Context context,Intent intent):接收到广播的回调
- abortBroadcast():中断广播的继续传播
- boolean isOrderedBroadcast():判断是否是有序广播
常见的系统广播
- 1,收到短信广播:android.provider.Telephony.SMS_RECEIVED
- 2,开机完成广播:Intent.ACTION_BOOT_COMPLETED
- 3,应用被卸载广播:Intent.ACTION_PACKGE_REMOVED
- 4,手机锁屏:Intent.ACTION_SCREEN_OFF
- 5,手机开屏:Intent.ACTION_SCREEN_ON
注册广播接收器
- 方式一:配置文件注册(静态注册)
<receiver android:name="com.example.mybroadcast.MyReceiver1">
<intent-filter>
<action android:name="com.example.mybroadcast.MyReceiver1.action"/>
</intent-filter>
</receiver>
静态注册的话,要注意android8.0以上要加入(不然会失效):
intent.setPackage(getPackageName());
- 方式二:硬编码注册(动态注册)
MyBroadcastReceiver receiver=new MyBroadcastReceiver(action);
IntentFilter filter=new IntentFilter(action);
registerReceiver(receiver,filter);
发送静态广播
我们接下来要做的是,一个进程发送一个广播给另一进程接收广播。
嗯,今天很奔溃,看着视频学习,但是代码打错一点点,所以就搞了好久,所以在你们在自己写的时候,代码不要写错!代码不要写错!代码不要写错!重要的事情说三遍。
好了,进入正题,既然我们要跨进程的广播,那我们就必须要创建两个应用。
首先我们进入第一个应用(广播接收器)要静态的注册广播。
写一个类继承BroadcastReceiver。建议不要创建一个类,然后自己写继承。可以使用便捷一点而且不容易写错的方法:
1,File->new->Other->Broadcast Receiver
2,在要接收广播的应用文件上右键,重复第一步的步骤。
/**
* 静态注册广播
*/
public class MyReceiver extends BroadcastReceiver {
public MyReceiver