静态注册广播:
1,需要继承BroadcastReceiver类,覆写其中的onReceive()方法.
class MyBroadcastReceiver extends BroadcastReceiver {
//接收到广播会被自动调用
@Override
public void onReceive (Context context, Intent intent) {
//从Intent中获取action
}
}
2,在manifest文件中注册广播,添加过滤条件
<application>
<receiver android:name=".MyBroadcastReceiver">
<!-- intent过滤器,指定可以匹配哪些intent, 一般需要定义action 可以是自定义的也可是系统的 -->
<intent-filter>
<action android:name="com.app.test"/>
</intent-filter>
</receiver>
</application>
3,发送一条广播
Intent intent = new Intent(“com.app.test”);
sendBroadcast(intent);//发送广播事件
动态注册广播:
BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
}
};
IntentFilter intentFilter = new IntentFilter("com.app.test”);
intentFilter.addCategory(Intent.CATEGORY_DEFAULT);
registerReceiver(mReceiver, intentFilter);
有序广播:
在清单文件manifest中设置广播接收器的优先级:
<receiver
android:name=".MyBroadcastReceiver">
<intent-filter android:priority="2500">
<action android:name="com.app.test" />
</intent-filter>
</receiver>
priority值越大,优先级越高,先执行。
在接收器中通过
abortBroadcast();
//关闭广播