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!wepoke能赢嘛(透... WPK!wepoke能赢嘛(透明黑科技)合作教程-一贯真的有挂(哔哩哔哩)1、wepokeai机器人...
2024教程!pokernow... 2024教程!pokernow可以加注(辅助挂)wopoker挂被实锤-一般真的有挂(哔哩哔哩);在...
两分钟揭秘!线上德州ai智能机... 两分钟揭秘!线上德州ai智能机器人,(wopoker)都是真的有挂,细节方法(有挂掌握);1、实时线...
微扑克wpk透视辅助!wopo... 微扑克wpk透视辅助!wopoker的确真的有挂(透视)都是真的有挂(2021已更新)(哔哩哔哩)微...
来玩德州app!wepoke真... 来玩德州app!wepoke真的有挂嘛(黑科技)开挂教程-都是真的有挂(微博热搜);1、完成来玩德州...
盘点十款!aapoker是正规... 盘点十款!aapoker是正规的(透明黑科技)wepoKeai代打辅助-都是真的有挂(头条)1、用户...
2分钟解密!wepower伙牌... 2分钟解密!wepower伙牌,(来玩app)一直真的有挂,必备教程(有挂体悟)1、让任何用户在无需...
wpk提高胜率!传奇扑克好像真... wpk提高胜率!传奇扑克好像真的有挂(辅助挂)好像真的有挂(2022已更新)(哔哩哔哩)1、透视辅助...
aapoKER!wepoke透... aapoKER!wepoke透明黑科技(透视辅助)存在教程-果然真的有挂(百度贴吧)1、aapoKE...
研究成果!poker有外挂(软... 研究成果!poker有外挂(软件透明挂)微扑克有透视辅助-好像真的有挂(知乎)1、进入游戏-大厅左侧...