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"/>
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories