a、简介
1、广播接收器 BroadcastReceiver
2、广播发送 sendBroadcast
b、用法
1、静态注册广播接收器
<receiver android:name=".customreceiver.CustomBroadcastReceiver">
<intent-filter>
<action android:name="z.intent.action.SHOW_SOME_TEXT" />
</intent-filter>
</receiver>
2、动态注册广播接收器
NetWorkReceiver netWorkReceiver = new NetWorkReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(netWorkReceiver, intentFilter);
d、
d.1、有序广播
该类型的广播,一旦发送,
所有注册的能够接收该广播的接收器
按照优先级进行顺序接收,优先级高的接收器
优先接收,然后经过一系列处理,再传递给优先级低的
接收器。当然,也可以不继续向下传递,直接abort。
1、优先级高的先接收,如果优先级一样则先注册的会先接收;
2、优先级高的已经接收处理消息的接收器可以继续向下传递
该广播,也可以阻断继续传递。 abortBroadcast();
3、优先级高的接收器处理的广播,可以追加消息,然后再继续传递。
(PS:Intent传递时,每次回调方法中的Intent均为新的对象,
那么向原先的Intent中追加bundle是无法追加成功的。
只能使用:setResultExtras(bundle))。
d.2、无序广播
该类型的广播一旦发送,
那么所有注册的能够接收该广播的接收器
均能平等的收到该广播消息。
e、广播接收器接收权限
(PS:以下的权限操作需要在Application标签外部)
a、自定义权限
1、通过<permission>此标签用来声明新的权限。
2、通过<uses-permission>此标签来申请新的权限。
广播的发送:
//下面两行操作,只能确保已经可以让广播接收器拦截该条广播信息
Intent intent = new Intent();
intent.setAction(ReceiveraActivionConstants.ACTION_RECEIVER_SHOW_SOME_TEXT);
//下面若干行代表发送的广播需要携带的信息
Bundle bundle = new Bundle();
bundle.putString("MSG", "这是一条广播信息");
intent.putExtras(bundle);
//准备就绪,可以发送一条广播了
sendBroadcast(intent, "z.permission.HAHAHA");
广播的接收:
public class CustomBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
String msg = bundle.getString("MSG");
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
}
}