发送自定义广播
发送标准广播
- 发送自定义的标准广播很简单,只需要将在注册广播的时候将Action自定义即可
- 首先自定义我们的广播接收器
public class MyBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "这是一条自定义的广播", Toast.LENGTH_SHORT).show();
abortBroadcast();
}
}
- 然后通过点击事件,发送自定义广播,这里自定义Action即可
Intent intent=new Intent();
intent.setAction("com.lingzhuo.MyBroadcast");
sendBroadcast(intent);
- 最后在Manifest文件中进行自定义广播的注册
<receiver android:name=".MyBroadcast">
<intent-filter android:priority="100">
<action android:name="com.lingzhuo.MyBroadcast">
</action>
</intent-filter>
</receiver>
效果如图所示
接上面的代码,在新建一个羡慕,写一个广播接收器,Action与上面的代码相同,证明广播可以跨应用传播
- 定义自己的广播接收器
public class MyBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "这是一条自定义233333的广播", Toast.LENGTH_SHORT).show();
}
}
- 注册自定义的广播接收器
<receiver android:name=".MyBroadcast">
<intent-filter>
//这里定义的Action和上面的代码的Action一致
<action android:name="com.lingzhuo.MyBroadcast"></action>
</intent-filter>
</receiver>
- 效果图如下
发送有序广播
- 有序广播可以被截断
- 将上面的代码进行简单的修改
Intent intent=new Intent();
intent.setAction("com.lingzhuo.MyBroadcast");
//仅将此出修改如下即可
sendOrderedBroadcast(intent,null);
- 有序广播需要在广播注册时设置广播的优先级
<receiver android:name=".MyBroadcast">
//这里将优先级设置成100,表示此接收器必第一个接收
<intent-filter android:priority="100">
<action android:name="com.lingzhuo.MyBroadcast">
</action>
</intent-filter>
</receiver>
- 在自定义接收器的代码中,可以设置截断广播,使其不再传播
public class MyBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "这是一条自定义的广播", Toast.LENGTH_SHORT).show();
//截断广播
abortBroadcast();
}
}
- 效果图如下,这次的点击就不会出现两个Toast,说明只有第一个接收器接受了广播,并且将其截断了。