当系统收到短信时,会发出一个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接收短信(SmsMessage.createFromPdu((byte[])obj)不推荐使用的处理方法)
最新推荐文章于 2024-04-14 23:41:58 发布