优先级高的接收器先接收。
优先级相同,动态注册的广播接收器先于静态注册。
优先级相同,注册类型相同,先注册先接收。
所以要保证第一个动态注册就是最先接收者。Receiver一般注册在服务里,所以要保证服务开机第一个启动。
示例:
if(filter==null){
filter = new IntentFilter(ACTION);
filter.setPriority(2147483647);
}
if(r==null){
r= new SmsReceiver();
}
registerReceiver(r, filter);
其中2147483647为最大int型整数。有人说优先级最大为1000,这个可以看看源码,但最大整数很保险。
<receiver android:name=".SmsReceiver" >
<intent-filter android:priority="2147483647">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>