hello,大家好 ,我是小杰,前几篇博文中我给大家介绍了四大组件的其中两种,今天给大家介绍一下第三个组件,BroadCastReceive,也就是广播接受者。广播是通过Intent发送action,然后注册一个接受者来接收这个action从而进行一些操作。
广播的发送方式
- 无序广播
- 有序广播
无序广播是所有的接收者都可以接收到这个action从而进行操作,而有序广播是根据优先级不同来进行接收,优先级大的先接收的这个广播,有序广播可以被拦截,一旦被拦截,优先级靠后的接受者则不能再接收到该广播。
无序广播的发送方式:
String action = "my_broadCastReceive_test";//定义action
Intent intent = new Intent(action);
sendBroadcast(intent);
有序广播的发送方式:
我们要接收有序广播首先必须要先增加权限:
<permission
android:name="com.android.permission.RECEIVER_ORDER_BROADCAST"
android:protectionLevel="normal" />
<uses-permission android:name="com.android.permission.RECEIVER_ORDER_BROADCAST" />
然后在发送广播:
String RECEIVER_PERMISSION = "com.android.permission.RECEIVER_ORDER_BROADCAST";//这里的权限必须要和AndroidManifest的权限一致
String action1 = "my_broadCastReceive_test1";//定义action
Intent intent1 = new Intent(action1);
sendOrderedBroadcast(intent1, RECEIVER_PERMISSION);
BroadCastReceive注册接受者
- 静态注册
- 动态注册
静态注册首先你要先写一个继承BroadCastReceive的类并且实现onReceive()方法,然后在AndroidManifest.xml中进行注册:
public class MyReceive extends BroadcastReceiver {
private static final String TAG="MyReceive";
@Override
public void onReceive(Context context, Intent intent) {
if (intent!=null) {
String action=intent.getAction();
if (action.equals("my_broadCastReceive_test")) {
Log.d(TAG, "onReceive: 我接受到了一条广播,action是:my_broadCastReceive_test");
}
}
}
}
<receiver android:name=".MyReceive">
<intent-filter>
<action android:name="my_broadCastReceive_test" />
</intent-filter>
</receiver>
有序广播在注册时需要增加优先级:
<receiver android:name=".MyReceive">
<intent-filter>
<action
android:name="my_broadCastReceive_test"
android:priority="500" />
</intent-filter>
</receiver>
这样一个广播接受者就注册成功了。
动态注册:
//动态注册广播
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("my_broadCastReceive_test");//添加action
registerReceiver(new MyReceive(), intentFilter);
有序广播增加优先级:
intentFilter.setPriority(500);