广播二

来源:互联网 发布:linux tftpd 编辑:程序博客网 时间:2024/04/26 23:00
有序广播:
普通广播不能中断,所有监听这个广播的都能收到信息。有序广播可以中断优点: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.构建短信对象arrayObject[] 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();}
---------获取短信内容
package com.example.works_msm;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.telephony.SmsMessage;import android.util.Log;/** * Created by Administrator on 2017/7/13 0013. */public class MySMS extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        if ("android.provider.Telephony.SMS_RECEIVED".equals(intent.getAction())) {            Log.i("test","收到短信了");            Bundle bundle=intent.getExtras();            Object object[]= (Object[]) bundle.get("pdus");            SmsMessage smsMessage[]=new SmsMessage[object.length];            for (int i = 0; i < object.length; i++) {                smsMessage[i]=SmsMessage.createFromPdu((byte[])object[i]);            }            for (SmsMessage message : smsMessage) {                String address=message.getOriginatingAddress();                String body=message.getDisplayMessageBody();                Log.i("test",address+":"+body);            }        }    }}
原创粉丝点击