有序广播:普通广播不能中断,所有监听这个广播的都能收到信息。有序广播可以中断
优点:1.按优先级的不同,优先Receiver可对数据进行处理,并传给下一个Receiver
设置优先级,在<intent-filter>节点中添加android:priority属性(取值范围:-1000到1000)
2.通过abortBroadcast可终止广播的传播
缺点:效率低
优先接收到Broadcast的Receiver可通过setResultExtras(Bundle)方法将处理结果存入Broadcast中
获取短信内容
系统广播:收到短信:
android.provider.Telephony.SMS_RECEIVED
权限<uses-permission android:name="android.permission.RECEIVE_SMS"/>
获取短信内容:
1.构建短信对象array
Object[] objArray=(Object[])bundle.get("puds");
2.根据收到的对象长度创建array长度
SmsMessage[] message=new SmsMessage[objArray.length];
3.把每一个单元的pdu格式的短信转换成SmsMessage对象
for(int i=0;i<objArray.length;i++){
messages[i]=SmsMessage.createFromPdu((byte[])objArray[i]);
}
4.获取短信的内容和对方的手机号码
for(SmsMessage s:sms){
String msg=s.getDisplayMessageBody();
String source=s.getDisplayOriginatingAddress();
}
优点:1.按优先级的不同,优先Receiver可对数据进行处理,并传给下一个Receiver
设置优先级,在<intent-filter>节点中添加android:priority属性(取值范围:-1000到1000)
2.通过abortBroadcast可终止广播的传播
缺点:效率低
优先接收到Broadcast的Receiver可通过setResultExtras(Bundle)方法将处理结果存入Broadcast中
获取短信内容
系统广播:收到短信:
android.provider.Telephony.SMS_RECEIVED
权限<uses-permission android:name="android.permission.RECEIVE_SMS"/>
获取短信内容:
1.构建短信对象array
Object[] objArray=(Object[])bundle.get("puds");
2.根据收到的对象长度创建array长度
SmsMessage[] message=new SmsMessage[objArray.length];
3.把每一个单元的pdu格式的短信转换成SmsMessage对象
for(int i=0;i<objArray.length;i++){
messages[i]=SmsMessage.createFromPdu((byte[])objArray[i]);
}
4.获取短信的内容和对方的手机号码
for(SmsMessage s:sms){
String msg=s.getDisplayMessageBody();
String source=s.getDisplayOriginatingAddress();
}