BroadcastReceiver是Android四大组件之一,是一种信息发送机制,相当于一种全局的监听器,它可以分为发送Broadcast Intent和接收BroadcastReceiver两个部分。在Android系统中,存在着大量的系统广播,比如在接打电话,收发短信,电池状态发生变化时,都会发送一条广播。此时我们可以通过注册BroadcastReceiver接收到这些广播,完成相关的业务操作。
1:静态注册(全局广播)
新建BroadcastReceiver
:new—>other—>Broadcast Receiver :
public class MyReceiver extends BroadcastReceiver {
public MyReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
//不能耗时操作!!! 只负责传递消息
Log.i("---","收到广播");
}
}
配置清单文件:
<receiver
android:name=".broadcast.MyReceiver"
android:enabled="true"
android:exported="true" >
<intent-filter>
<action android:name="com.inext.mycast(可自定义)"/>
</intent-filter>
</receiver>
发送广播:
Intent intent = new Intent();
//全局注册(静态注册)
intent.setAction("清单文件中的广播name");
sendBroadcast(intent);
2:动态注册(应用广播,只在应用中使用):
新建类DIYBroadCast
继承BroadcastReceiver
,完成重写方法:
public class DIYBroadCast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("---","接收动态广播");
}
}
注册与发送广播:
//动态注册广播
DIYBroadCast diyBroadCast = new DIYBroadCast();
IntentFilter intentFilter = new IntentFilter();
//添加广播名(自定义)
intentFilter.addAction("com.my.broadcast");
//注册
registerReceiver(diyBroadCast, intentFilter);
//发送广播,广播名称必须与注册广播的注册名相同
Intent intent = new Intent("com.my.broadcast");
sendBroadcast(intent);