您的位置:首页 > 移动开发 > Android开发

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

2016-07-24 13:42 525 查看
参考: 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"/>

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android createFromPdu