Android – 监听传入的短信

android

2个回答

写回答

c.琳

2025-09-17 17:53

+ 关注

Android
Android

使用Android平台开发应用程序可以实现许多功能,其中之一是监听并处理传入的短信。通过监听短信,我们可以在接收到新短信时执行特定的操作,例如自动回复、提取验证码等。本文将介绍如何在Android应用程序中实现监听传入短信的功能,并提供案例代码供参考。

监听传入短信的原理

Android平台上,我们可以通过注册BroadcastReceiver来监听短信的到达。当有新的短信到达时,系统会发送一个名为"Android.provider.Telephony.SMS_RECEIVED"的广播,我们可以通过注册该广播来监听短信事件。在接收到短信广播后,我们可以在BroadcastReceiver中进行相应的处理。

实现监听短信的步骤

1. 添加权限

AndroidManifest.XML文件中添加以下权限,以获取读取短信的权限:

XML

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

<uses-permission Android:name="Android.permission.READ_SMS" />

2. 创建BroadcastReceiver

创建一个继承自BroadcastReceiver的类,用于接收短信广播并处理短信内容。在onReceive()方法中,我们可以获取短信相关的信息,例如发送方号码、短信内容等。

Java

public class SmsReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

if (intent.getAction().equals("Android.provider.Telephony.SMS_RECEIVED")) {

Bundle bundle = intent.getExtras();

if (bundle != null) {

Object[] pdus = (Object[]) bundle.get("pdus");

if (pdus != null && pdus.length > 0) {

SmsMessage[] messages = new SmsMessage[pdus.length];

for (int i = 0; i < pdus.length; i++) {</p> messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);

}

// 处理短信内容

handleSmsMessage(messages);

}

}

}

}

private void handleSmsMessage(SmsMessage[] messages) {

// 处理短信内容的逻辑

}

}

3. 注册BroadcastReceiver

AndroidManifest.XML文件中注册BroadcastReceiver,并指定接收短信广播的优先级。

XML

<receiver Android:name=".SmsReceiver">

<intent-filter Android:priority="100">

<action Android:name="Android.provider.Telephony.SMS_RECEIVED" />

</intent-filter>

</receiver>

4. 添加处理逻辑

在SmsReceiver类的handleSmsMessage()方法中,可以根据实际需求编写处理短信的逻辑。例如,可以在接收到指定关键词的短信时自动回复,或者提取短信中的验证码并进行验证等。

示例代码

下面是一个简单的示例代码,演示如何监听传入的短信并打印短信内容。

Java

public class SmsReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

if (intent.getAction().equals("Android.provider.Telephony.SMS_RECEIVED")) {

Bundle bundle = intent.getExtras();

if (bundle != null) {

Object[] pdus = (Object[]) bundle.get("pdus");

if (pdus != null && pdus.length > 0) {

SmsMessage[] messages = new SmsMessage[pdus.length];

for (int i = 0; i < pdus.length; i++) {</p> messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);

}

handleSmsMessage(messages);

}

}

}

}

private void handleSmsMessage(SmsMessage[] messages) {

for (SmsMessage message : messages) {

String sender = message.getDisplayOriginatingAddress();

String content = message.getDisplayMessageBody();

Log.d("SmsReceiver", "收到来自" + sender + "的短信:" + content);

}

}

}

通过以上步骤,我们就可以在Android应用程序中实现监听传入短信的功能。根据实际需求,我们可以在BroadcastReceiver中处理短信内容,并执行相应的操作。

举报有用(4分享收藏

864932283

2025-09-19 11:06

+ 关注

Android中监听传入的短信需要使用广播接收器(BroadcastReceiver)。你需要创建一个继承自BroadcastReceiver的类,并重写onReceive()方法来处理接收到的短信。在AndroidManifest.XML中注册这个接收器,并使用适当的意图过滤器来监听短信接收事件。请注意,从Android 8.0(API级别26)开始,接收隐式广播(如短信接收)受到限制,需要使用前台服务或其他方式来监听。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号