android接收短信(SmsMessage.createFromPdu((byte[])obj)不推荐使用的处理方法)
参考:
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.声明短信接收权限:
更多相关文章
- 单元测试;Android应用程序架构;电话拔号器;短信发送器
- 初学Android,短信管理器之发送短信(六十五)
- 电话短信问题
- android画图---图像的扭曲
- android AudioTrack 播放 正弦波 方波
- android之xml对象到json对象的转化
- android的日积月累-监听短信
- androidにはOpenGLを勉強する
- Android(安卓)string-array简单使用