Order broadcasts 有序广播
使用:context.sendOrderBradcast() 有序广播比较特殊,它每次只发送到优先级较高的接收者那里
然后由高到低,高的可以阻止低的 短信拦截
在注册广播的时候可以使用优先级android:priority属性 这个属性的范围在 -1000到1000,
数值越大优先级越高
obortBradcast();停止传递
有序广播示例:
通过按钮点击发送一个有序广播
//发送一个有序广播
public void sendOrderBroad(View v){
Intent intent=new Intent("com.qq.order");
intent.putExtra("info", "有序接收中。。。");
//null表示接收此广播不需要权限
this.sendOrderedBroadcast(intent, null);
}
新建一个广播接收者1(1接收2传递过来值,因为2的优先级高)
public class MyOderBroad extends BroadcastReceiver{
@Override
public void onReceive(Context arg0, Intent intent) {
// TODO Auto-generated method stub
Bundle bundle = getResultExtras(false);
String st = bundle.getString("in");
Toast.makeText(arg0, st, 1).show();
}
}
新建一个广播接收者2(可以向1发消息,也可以终止广播)
public class MyOderBroad2 extends BroadcastReceiver{
@Override
public void onReceive(Context arg0, Intent intent) {
// TODO Auto-generated method stub
String st = intent.getStringExtra("info");
Toast.makeText(arg0, "有序广播2", 1).show();
//this.abortBroadcast();//如果它的优先级高,就中断有序广播 (只有有序广播能中断)
Bundle data=new Bundle();
data.putString("in", "高传下低"); //MyOderBroad就会接收
this.setResultExtras(data);
}
}
在xml中注册
<receiver
android:name="com.example.day0706mybroadcasereceiver.MyOderBroad"
android:enabled="true"
android:exported="true"
>
<!-- 和接收者action一致 -->
<intent-filter
android:priority="100">
<action android:name= "com.qq.order"/>
</intent-filter>
</receiver>
<receiver
android:name="com.example.day0706mybroadcasereceiver.MyOderBroad2"
android:enabled="true"
android:exported="true"
>
<!-- 和接收者action一致 -->
<intent-filter android:priority="200">
<action android:name= "com.qq.order"/>
</intent-filter>
</receiver>