Android开发中的短信发送与接收功能

柔情密语 2023-08-17 ⋅ 22 阅读

在Android开发中,短信发送与接收功能是一个常见且重要的需求。无论是用户验证、短信验证码、还是与服务器进行通信,短信功能都是必不可少的一部分。本文将介绍Android中如何通过代码实现短信的发送与接收功能。

1. 短信发送

Android提供了短信管理器(SmsManager)类,可以用于发送短信。

首先,在AndroidManifest.xml文件中添加以下权限:

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

然后,在需要发送短信的地方,可以使用以下代码:

String phoneNumber = "目标手机号码";
String message = "短信内容";

SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNumber, null, message, null, null);

以上代码通过SmsManager类的sendTextMessage方法发送短信。其中,第一个参数是目标手机号码,第二个参数是发件人的显示名称,设置为null表示使用默认值;第三个参数是短信内容;第四个参数是发送状态的PendingIntent;第五个参数是发送结果的PendingIntent。

2. 短信接收

要接收短信,需要在AndroidManifest.xml文件中注册一个BroadcastReceiver,并声明接收短信的权限。

首先,在AndroidManifest.xml文件中添加以下权限和BroadcastReceiver:

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

<receiver android:name=".SmsReceiver">
    <intent-filter>
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>
</receiver>

然后,在项目中创建一个继承自BroadcastReceiver的类SmsReceiver:

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) {
                    for (Object pdu : pdus) {
                        SmsMessage message = SmsMessage.createFromPdu((byte[]) pdu);
                        String phoneNumber = message.getOriginatingAddress();
                        String messageBody = message.getMessageBody();
                        // 处理收到的短信
                    }
                }
            }
        }
    }
}

在以上代码中,我们通过继承BroadcastReceiver类重写了onReceive方法,该方法会在接收到短信时被调用。我们可以在此方法中获取短信的发送者手机号码和短信内容,并进行后续的处理。

需要注意的是,由于Android 6.0及以上版本对权限进行了动态授予,因此在运行时需要判断并请求"android.permission.RECEIVE_SMS"权限。

以上就是Android开发中短信发送与接收功能的实现方式。希望本文对你有所帮助。如果有任何疑问或建议,欢迎留言讨论。


全部评论: 0

    我有话说: