Android弹窗短信整理——利用Receiver收取短信

本文介绍了在Android开发中如何使用Receiver接收短信,包括在Manifest中注册Receiver和实现SmsReceiver类的OnReceive方法,以实现新短信到达时的系统广播监听。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近开始自学Android开发,决定自己做一点小项目,边做边学,然后就做了一个弹窗短信,今天开始整理整理开发的时候碰到的问题以及学到的东西。

今天先说利用Receiver获取系统广播,获得新短信,网上其实还有另一种方法:监听系统短信数据库,

一、注册Receiver

现在Mainfest中注册一个Reiceiver,当系统受到短信的时候,就可以收到系统广播,知道收到新短信。

添加权限:

<uses-permission android:name="android.permission.RECEIVE_SMS" />

注册一个Reiceiver :

<receiver
	android:name=".SMSReceiver"
	android:enabled="true"
	android:exported="true" >
	<intent-filter>
		<action android:name="android.provider.Telephony.SMS_RECEIVED" />
	</intent-filter>
</receiver>

二、实现SmsReceiver类

实现SmsReceiver类的OnReceive()方法:

@Override
public void onReceive(Context context, Intent intent) {
	if("android.provider.Telephony.SMS_RECEIVED".equals(tIntent.getAction()))
	{
		messageText="";
		Bundle bundle = intent.getExtras();
		
		if(bundle != null)
		{
			Object[] objArray = (Object[])bundle.get("pdus");
			SmsMessage[] Sms = new SmsMessage[objArray.length];
			for(int i=0; i<objArray.length; i++)
			{
				Sms[i] = SmsMessage.createFromPdu((byte[]) objArray[i]);
			}

			for(SmsMessage currentMessage : Sms)
			{
				//获取发信人
				address = currentMessage.getDisplayOriginatingAddress();
				//获取短信内容
				messageText += currentMessage.getDisplayMessageBody();
				//获取短信时间,这是服务商提供的时间,而不是系统受到短信时的当前时间
				time = new Date(currentMessage.getTimestampMillis());
				//由于获得的时间是包含年月日,时区信息,所以做个处理,只要小时和分
				hourMin = getHourMin(time);
			}
		}

		/*启动弹窗的Activity,这是为了之后介绍的弹窗做准备,不做弹窗就可以不用了~
		*Intent popWindowIntent = new Intent(tContext, PopWindowActivity.class);
		*popWindowIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		*context.startActivity(popWindowIntent);
		*/
	}
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值