Android中实现Broastcast接收短信

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;

		@Override
		public 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();
		}

	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值