Android收到短信后系统会发送一个android.provider.Telephony.SMS_RECEIVED广播,

为什么bundle.get("pdus");得到的是一个数组,后来查了相关资料,pdus应该是protocol description units的简写,也就是短信们,
经过我测试后发现Android不是一接收到短信就立刻发出广播的,他会有一定的延迟,所以就有可能会有多条短信,所以才会用数组来存放,

private class TestBroadcast extends BroadcastReceiver {private String sender;private String content;private String sendtime;@Overridepublic void onReceive(Context context, Intent intent) {//接收Intent对象当中的数据Bundle bundle = intent.getExtras();//在Bundle对象当中有个叫"pdus"的属性,这个属性的值是一个Objec数组Object messages[] = (Object[]) bundle.get("pdus");//创建一个SmsMessage类型的数组SmsMessage smsMessage[] = new SmsMessage[messages.length];for (int n = 0; n < messages.length; n++) {//使用Object数组当中的对象创建SmsMessgae对象smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);sender = smsMessage[n].getOriginatingAddress();// 获取短信的发送者content = smsMessage[n].getMessageBody();// 获取短信的内容Date date = new Date(smsMessage[n].getTimestampMillis());// 获取短信的接收时间SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");sendtime = format.format(date);}// 接收到广播消息后提示消息Toast.makeText(context, sender + "," + content + "," + sendtime,Toast.LENGTH_LONG).show();}}


更多相关文章

  1. Android实现页面跳转的几种方式(转贴)
  2. Android发送短信
  3. 关于Android短信管理
  4. Android(安卓)SparseArray与HashMap与ArrayMap的性能差别
  5. Android的四大组件
  6. android 的短信数据库的读取
  7. Android(安卓)广播接收者(具体例子)
  8. android传输视频到PC
  9. Android高效编程注意事项

随机推荐

  1. Android设备获取扫码枪扫描的内容与可能
  2. 基于android的网络音乐播放器-回调实现音
  3. 仿写Android屏幕解锁小应用
  4. Android位置策略(五)
  5. Android中 dip 和 px 的关系
  6. 面试时的那些坑之内存泄漏和内存溢出
  7. Android数据本地安全存储
  8. Android关于第三方h5在webview调用摄像头
  9. Android简单、高性能的高斯模糊(毛玻璃)效
  10. Android实现竖着的滑动刻度尺效果,选择身