android接收短信(SmsMessage.createFromPdu((byte[])obj)不推荐使用的处理方法)

来源:互联网 发布:js url转base64编码 编辑:程序博客网 时间:2024/06/15 02:33

参考:

http://blog.csdn.net/junjieking/article/details/6867594

http://blog.csdn.net/yangshangwei/article/details/50705196

当系统收到短信时,会发出一个action名称为android.provier.Telephony.SMS_RECEIVED的广播Intent,该Intent存放了接收到的短信内容,使用名称 “pdus”即可从Intent中获取短信内容。

pdus是一个object类型的数组,每一个object都是一个byte[]字节数组,每一项为一条短信。

Object[] pduses= (Object[])intent.getExtras().get("pdus");

for(Object pdus: pduses){

byte[] pdusmessage = (byte[])pdus;

SmsMessage sms = SmsMessage.createFromPdu(pdusmessage);

String mobile = sms.getOriginatingAddress();//发送短信的手机号码

String content = sms.getMessageBody(); //短信内容

Date date = new Date(sms.getTimestampMillis());

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String time = format.format(date);  //得到发送时间

}

由于createFromPdu(byte[]) method was deprecated in API level 23. Use createFromPdu(byte[], String) instead.

String format = intent.getStringExtra("format");SmsMessage smsMessage;if(Build.VERSION.SDK_INT < 23){    smsMessage = SmsMessage.createFromPdu((byte[])obj) ;}else{    smsMessage = SmsMessage.createFromPdu((byte[])obj,format) ;}


实现步骤:

1.自定义广播接收器,继承BroadcastReceiver类,并重写onReceive()方法。

onReceive的生命周期为10秒,所以里面的操作不能超过10秒

2.注册广播:动态注册或静态注册

3.声明短信接收权限:<uses-permission android:name="android.permission.RECEIVE_SMS"/>





                                             
1 0
原创粉丝点击