android 发送短信回调_发送短信
创始人
2024-11-30 01:34:52
0
在Android中,发送短信的回调可以通过实现SmsManager.OnSendCompletedListener接口来实现。当短信成功发送或失败时,系统会调用相应的回调方法。

在Android中,发送短信通常需要使用SmsManager类,以下是一个简单的示例,展示了如何使用SmsManager发送短信并处理回调。

android 发送短信回调_发送短信(图片来源网络,侵删)

1、需要在AndroidManifest.xml文件中添加以下权限:

 

2、创建一个方法来发送短信:

 private void sendSms(String phoneNumber, String message) {     SmsManager smsManager = SmsManager.getDefault();     smsManager.sendTextMessage(phoneNumber, null, message, null, null); }

3、处理发送短信的回调:

为了处理发送短信的回调,我们需要实现一个BroadcastReceiver,创建一个名为SmsSentReceiver的类,继承自BroadcastReceiver:

 public class SmsSentReceiver extends BroadcastReceiver {     @Override     public void onReceive(Context context, Intent intent) {         if (intent.getAction().equals("android.provider.Telephony.SMS_SENT")) {             Bundle bundle = intent.getExtras();             if (bundle != null) {                 Object[] pdus = (Object[]) bundle.get("pdus");                 for (Object pdu : pdus) {                     SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu);                     String sender = smsMessage.getDisplayOriginatingAddress();                     String body = smsMessage.getDisplayMessageBody();                     Log.d("SMS", "Sender: " + sender + ", Body: " + body);                 }             }         }     } }

4、在AndroidManifest.xml文件中注册SmsSentReceiver:

                     

5、调用sendSms方法发送短信:

 String phoneNumber = "1234567890"; // 替换为目标手机号码 String message = "Hello, this is a test message!"; // 替换为要发送的消息内容 sendSms(phoneNumber, message);

这样,当短信发送成功时,SmsSentReceiver的onReceive方法将被调用,我们可以在其中处理发送短信的回调。

android 发送短信回调_发送短信(图片来源网络,侵删)


下面是一个描述Android中发送短信及其回调的介绍:

步骤 操作 说明
1 导入权限 在AndroidManifest.xml中添加发送短信的权限
2 初始化SmsManager SmsManager是Android系统提供用于发送短信的类
3 发送短信 使用SmsManager的sendTextMessage方法发送短信
4 设置回调 为发送过程设置结果回调
参数/回调 说明
发送短信权限
初始化SmsManagerSmsManager smsManager = SmsManager.getDefault();
sendTextMessage参数smsManager.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
phoneNumber 接收者的电话号码
message 要发送的短信文本
sentPI 发送状态回调(PendingIntent)
deliveredPI 送达状态回调(PendingIntent)
回调类型 PendingIntent动作 说明
发送状态回调 SENT 当短信发送成功或失败时触发
送达状态回调 DELIVERED 当短信被接收者设备成功接收时触发
回调处理 操作
发送状态处理 在发送回调的PendingIntent中定义一个广播接收器(BroadcastReceiver)来处理发送状态
送达状态处理 在送达回调的PendingIntent中定义一个广播接收器(BroadcastReceiver)来处理送达状态

下面是如何在代码中设置回调的例子:

 // 创建发送状态的PendingIntent PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent("SMS_SENT"), 0); // 创建送达状态的PendingIntent PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent("SMS_DELIVERED"), 0); // 注册发送和送达的广播接收器(在onCreate中注册,onDestroy中注销) // 发送短信 SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);

然后在广播接收器中处理这些回调:

 // 创建广播接收器 private BroadcastReceiver smsSentReceiver = new BroadcastReceiver() {     @Override     public void onReceive(Context context, Intent intent) {         switch (getResultCode()) {             case Activity.RESULT_OK:                 // 短信发送成功                 break;             case SmsManager.RESULT_ERROR_GENERIC_FAILURE:             case SmsManager.RESULT_ERROR_NO_SERVICE:             case SmsManager.RESULT_ERROR_NULL_PDU:             case SmsManager.RESULT_ERROR_RADIO_OFF:                 // 发送失败,处理错误                 break;         }     } }; private BroadcastReceiver smsDeliveredReceiver = new BroadcastReceiver() {     @Override     public void onReceive(Context context, Intent intent) {         switch (getResultCode()) {             case Activity.RESULT_OK:                 // 短信送达成功                 break;             // 送达状态没有错误代码,通常只关心是否送达         }     } }; // 在onCreate中注册广播接收器 registerReceiver(smsSentReceiver, new IntentFilter("SMS_SENT")); registerReceiver(smsDeliveredReceiver, new IntentFilter("SMS_DELIVERED")); // 在onDestroy中注销广播接收器 @Override protected void onDestroy() {     unregisterReceiver(smsSentReceiver);     unregisterReceiver(smsDeliveredReceiver);     super.onDestroy(); }

请注意,从Android 4.4 (KitKat) 开始,对于非默认的短信应用,需要通过调用SmsManager.getSmsManagerForSubscriptionId(subscriptionId) 来获取SmsManager 实例,并且发送短信的权限需要用户明确的授予,在最新的Android版本中,Google也引入了更加严格的权限管理,可能还需要处理运行时权限的问题。

android 发送短信回调_发送短信(图片来源网络,侵删)

相关内容

热门资讯

三分钟课程!樱花之盛挂,微信小... 三分钟课程!樱花之盛挂,微信小程序十三张脚本(辅助)一贯真的有神器(哔哩哔哩)1、完成微信小程序十三...
4分钟步骤!福建天天开心辅助工... 4分钟步骤!福建天天开心辅助工具视频,新荣耀辅助软件(辅助)真是真的有脚本(哔哩哔哩)1、任何福建天...
3分钟诀窍!福建天天开心辅助工... 3分钟诀窍!福建天天开心辅助工具视频,财神十三章怎样加强运气(辅助)都是真的有神器(哔哩哔哩)福建天...
第3分钟手段!拱趴大菠萝辅助,... 第3分钟手段!拱趴大菠萝辅助,皇豪互众控制系统(辅助)一直是有辅助器(哔哩哔哩)1、用户打开应用后不...
第六分钟步骤!微乐广西麻辣辅助... 第六分钟步骤!微乐广西麻辣辅助,蜜瓜大厅小程序辅助(辅助)好像是真的辅助器(哔哩哔哩)1、第六分钟步...
第9分钟阶段!越乡游义乌辅助器... 第9分钟阶段!越乡游义乌辅助器微信,新道游怎么开挂(辅助)总是真的是有神器(哔哩哔哩)1、很好的工具...
第9分钟手段!财神13章辅助软... 第9分钟手段!财神13章辅助软件,海米大厅辅助(辅助)一直是真的工具(哔哩哔哩)财神13章辅助软件能...
7分钟教程书!荣耀拼三张辅助,... 7分钟教程书!荣耀拼三张辅助,微信财神十三章辅助(辅助)确实有挂下载(哔哩哔哩)1、在微信财神十三章...
五分钟手段!雀神广东定制插件,... 五分钟手段!雀神广东定制插件,卡农血拼辅助(辅助)真是有挂修改器(哔哩哔哩)在进入雀神广东定制插件软...
第4分钟大纲!九九山城万州辅助... 第4分钟大纲!九九山城万州辅助,美猴王辅助(辅助)真是是有修改器(哔哩哔哩)1、九九山城万州辅助辅助...