在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开发中短信发送与接收功能的实现方式。希望本文对你有所帮助。如果有任何疑问或建议,欢迎留言讨论。
本文来自极简博客,作者:柔情密语,转载请注明原文链接:Android开发中的短信发送与接收功能