临沂阿里云代理商:android 获取短信发送状态

要获取Android手机上短信发送的状态,可以通过以下步骤:

  1. 添加短信发送权限到AndroidManifest.xml文件中:
<uses-permission android:name="android.permission.SEND_SMS"/>
  1. 在发送短信的代码中,注册一个BroadcastReceiver来接收短信发送状态的广播:
// 创建BroadcastReceiver
private BroadcastReceiver messageSentReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        switch (getResultCode()) {
            case Activity.RESULT_OK:
                // 短信发送成功
                Toast.makeText(context, "短信发送成功", Toast.LENGTH_SHORT).show();
                break;
            case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                // 短信发送失败
                Toast.makeText(context, "短信发送失败", Toast.LENGTH_SHORT).show();
                break;
            case SmsManager.RESULT_ERROR_NO_SERVICE:
                // 手机没有信号
                Toast.makeText(context, "手机没有信号", Toast.LENGTH_SHORT).show();
                break;
            case SmsManager.RESULT_ERROR_NULL_PDU:
                // 短信内容为空
                Toast.makeText(context, "短信内容为空", Toast.LENGTH_SHORT).show();
                break;
            case SmsManager.RESULT_ERROR_RADIO_OFF:
                // 手机无法发送短信,可能是飞行模式
                Toast.makeText(context, "手机无法发送短信", Toast.LENGTH_SHORT).show();
                break;
        }
    }
};

// 注册BroadcastReceiver
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction("SMS_SENT");

    registerReceiver(messageSentReceiver, intentFilter);
}

// 发送短信
private void sendSMS(String phoneNumber, String message) {
    SmsManager smsManager = SmsManager.getDefault();
    PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent("SMS_SENT"), 0);
    smsManager.sendTextMessage(phoneNumber, null, message, sentPI, null);
}

// 在Activity销毁时注销BroadcastReceiver
@Override
protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(messageSentReceiver);
}
  1. 调用sendSMS()方法发送短信,当短信发送状态改变时,BroadcastReceiver会收到相应的广播并处理。

请注意,手机短信发送状态的检测并不是实时的,可能会有延迟。因此,我们在发送短信时只能获取到短信发送的状态,但无法获取到具体的短信接收状态。

要获取 Android 设备上短信的发送状态,您可以使用 BroadcastReceiver 来监听短信发送状态的变化。

首先,在您的 AndroidManifest.xml 文件中添加以下权限和广播接收器声明:

<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

<receiver android:name=".SmsBroadcastReceiver">
    <intent-filter>
        <action android:name="android.provider.Telephony.SMS_DELIVER" />
        <action android:name="android.provider.Telephony.SMS_SENT" />
    </intent-filter>
</receiver>

然后,创建一个名为 SmsBroadcastReceiver 的广播接收器类,并实现 onReceive() 方法:

public class SmsBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction() != null) {
            switch (intent.getAction()) {
                case "android.provider.Telephony.SMS_DELIVER":
                    // 收到短信
                    break;
                case "android.provider.Telephony.SMS_SENT":
                    // 短信发送状态
                    int resultCode = getResultCode();
                    if (resultCode == Activity.RESULT_OK) {
                        // 短信发送成功
                    } else {
                        // 短信发送失败
                    }
                    break;
            }
        }
    }
}

接下来,您需要在您的代码中注册 SmsBroadcastReceiver 广播接收器。可以在 onCreate() 方法中注册,在 onDestroy() 方法中取消注册:

临沂阿里云代理商:android 获取短信发送状态
private SmsBroadcastReceiver smsBroadcastReceiver;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    smsBroadcastReceiver = new SmsBroadcastReceiver();
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction("android.provider.Telephony.SMS_DELIVER");
    intentFilter.addAction("android.provider.Telephony.SMS_SENT");
    registerReceiver(smsBroadcastReceiver, intentFilter);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(smsBroadcastReceiver);
}

这样,您的应用就可以接收到关于短信发送状态的广播通知了。

发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/142705.html

(0)
luotuoemo的头像luotuoemo
上一篇 2024年2月10日 13:47
下一篇 2024年2月10日 14:00

相关推荐

  • 常德阿里云代理商:api gl

    常德阿里云代理商:阿里云API GL的优势 阿里云是一家全球领先的云计算服务提供商,为企业和个人用户提供安全、可靠、弹性、高性能的云计算产品和服务。作为常德地区的阿里云代理商,我们要向大家介绍阿里云的API Gateway(API GL)在云计算领域的优势。 1. 强大的分布式架构 API GL基于阿里云分布式架构,具备高可用性、弹性扩展和负载均衡的特点。它…

    2024年1月26日
    35500
  • MST云真机调试是什么,他们是真机吗?

    MST云真机调试是什么,他们是真机吗? MST云测,支持电脑手机方式远程使用云端手机进行使用、测试、调试等工作,对,是真机的,他们的机房在全国都有。 优测的云真机测试是用真的手机吗? 好像用的是真手机了,实验必须保证真实性。实践是检验真理的唯一标准。

    2023年8月25日
    32300
  • 阿里云数字藏品服务

    阿里云数字藏品服务是由阿里云提供的一项服务,旨在帮助用户将实物文物、艺术品等传统藏品数字化,并提供安全可靠的存储、展示和交易平台。 阿里云数字藏品服务主要提供以下功能: 数字化传承:用户可以通过阿里云平台将实物藏品进行数字化,包括对文物、艺术品的高清图像、文献资料、藏品描述等信息进行数字化记录。 数字展示与交流:用户可以通过阿里云数字藏品服务创建个人或机构的…

    2023年9月7日
    37800
  • 阿里云企业邮箱:为什么需要邮件内容深度学习防护?

    以下是一篇关于阿里云企业邮箱以及为什么需要邮件内容深度学习防护的文章,文章结合了阿里云企业邮箱及其代理商的优势,条理清晰,简单明了,并以一段总结结束。 阿里云企业邮箱:为什么需要邮件内容深度学习防护? 在信息化快速发展的今天,企业邮箱已成为企业通信的重要工具。阿里云企业邮箱作为市场上的佼佼者,不仅提供稳定的邮件收发功能,还引入了先进的深度学习技术,以增强邮件…

    2025年4月11日
    20300
  • 阿里云企业邮箱:为什么邮件撤回功能很重要?

    阿里云企业邮箱:为什么邮件撤回功能很重要? 在现代办公中,电子邮件已经成为了企业沟通和信息传递的重要工具。然而,邮件发送后的不可逆性常常让人感到困扰,特别是在误发邮件、邮件内容错误或需要做出修改时。为了解决这一问题,阿里云企业邮箱推出了“邮件撤回”功能,这一功能在企业邮件管理中具有重要意义。本文将从阿里云企业邮箱的优势出发,探讨邮件撤回功能的重要性,并结合阿…

    2025年4月12日
    23800

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
购买阿里云服务器请访问:https://www.4526.cn/