文章目录
在Android中创建短信,可以使用SmsManager类。首先获取SmsManager实例,然后调用sendTextMessage方法发送短信。
Android 创建短信
在 Android 应用中,我们可以使用短信 API 来发送和接收短信,本文将介绍如何在 Android 应用中创建短信。
准备工作
1、添加权限:在 AndroidManifest.xml 文件中添加以下权限:
<usespermission android:name="android.permission.SEND_SMS" />
2、获取短信管理器:通过 Context 对象获取短信管理器的实例。
SmsManager smsManager = SmsManager.getDefault();
3、设置发送短信所需的参数:包括目标号码、短信内容等。
String phoneNumber = "1234567890"; // 目标号码 String message = "Hello, this is a test message!"; // 短信内容
创建短信
1、创建 PendingIntent:用于指定短信发送后的操作,例如显示通知或启动活动。
Intent intent = new Intent(context, SmsSentReceiver.class); PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
2、创建 SMS 消息对象:包含目标号码、短信内容和 PendingIntent。
SmsMessage smsMessage = SmsMessage.createFromPdu(byte[] data, null); smsMessage.setAddress(phoneNumber); smsMessage.setBody(message); smsMessage.setPortAddress(portAddress); // 如果需要设置端口地址,否则可以省略此行代码 smsMessage.setPendingIntent(sentPI); // 设置 PendingIntent
3、发送短信:调用短信管理器的 sendTextMessage() 方法发送短信。
smsManager.sendTextMessage(phoneNumber, null, message, sentPI, null);
接收短信
1、创建一个广播接收器类(SmsReceiver)继承自 BroadcastReceiver,并重写 onReceive() 方法来处理接收到的短信。
2、在 AndroidManifest.xml 文件中注册广播接收器。
<receiver android:name=".SmsReceiver"> <intentfilter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intentfilter> </receiver>
3、在 onReceive() 方法中获取接收到的短信,并进行相应的处理。
Bundle bundle = intent.getExtras(); //获取短信内容的对象 Object[] pdus = (Object[]) bundle.get("pdus"); //获取数组对象 for (int i = 0; i < pdus.length; i++) { //遍历数组 SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdus[i]); //创建短信对象 String phoneNumber = currentMessage.getDisplayOriginatingAddress(); //获取发件人号码 String senderId = currentMessage.getDisplayOriginatingAddress(); //获取发件人ID String messageBody = currentMessage.getDisplayMessageBody(); //获取短信内容 //在这里进行相应的处理,例如显示通知或保存到数据库等操作。 }
相关问题与解答
问题1:如何设置短信的优先级?
解答:可以通过 setPriority() 方法设置短信的优先级,取值范围为 PRIORITY_HIGH、PRIORITY_LOW、PRIORITY_NORMAL,示例代码如下:
smsMessage.setPriority(SmsMessage.PRIORITY_HIGH); // 设置优先级为高优先级