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 发送短信回调_发送短信(图片来源网络,侵删)

相关内容

热门资讯

透视美元局!wpk透视工作室,... 透视美元局!wpk透视工作室,智星菠萝可以辅助吗,必赢方法(有挂解密)1、金币登录送、破产送、升级送...
透视辅助!点我休闲辅助(辅助挂... 透视辅助!点我休闲辅助(辅助挂)一贯有挂(详细辅助专业教程);1、金币登录送、破产送、升级送、活动送...
hhpoker辅助软件!wep... hhpoker辅助软件!wepoker有透视底牌吗(透视)一贯存在有挂(高科技教程)1、wepoke...
透视真的!aapoker免费透... 透视真的!aapoker免费透视脚本,wpk透视辅助方法,安装教程(有挂揭秘)1、许多玩家不知道aa...
透视辅助!闲逸辅助软件下载苹果... 透视辅助!闲逸辅助软件下载苹果(辅助挂)好像真的有挂(详细辅助分享教程)1.闲逸辅助软件下载苹果 a...
wepoker辅助下载!拱趴大... wepoker辅助下载!拱趴大菠萝辅助神器(透视)一贯有挂(2025新版教程)1、拱趴大菠萝辅助神器...
透视黑科技!aapoker透视... 透视黑科技!aapoker透视脚本下载,hhpoker透视下载链接在哪里,必胜教程(有挂方法)1、h...
透视辅助!一起宁德钓蟹作弊(辅... 透视辅助!一起宁德钓蟹作弊(辅助挂)切实真的有挂(详细辅助安装教程);1、一起宁德钓蟹作弊透视辅助简...
红龙poker作弊指令!wep... 红龙poker作弊指令!wepoker透视版下载(透视)本来真的有挂(规律教程)1、全新机制【红龙p...
透视软件!wpk辅助插件,aa... 透视软件!wpk辅助插件,aapoker辅助插件工具下载,必备教程(有挂细节)1、aapoker辅助...