临沂阿里云代理商: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

相关推荐

  • 滁州阿里云代理商:阿里云空间过期能续吗

    滁州阿里云代理商:阿里云空间过期能续吗 阿里云的优势 阿里云是全球领先的云计算服务提供商,拥有丰富的产品和服务线,以及强大的技术实力。其优势包括: 高可靠性和稳定性 灵活的资源扩展能力 安全性保障 专业的技术支持和售后服务 如何续费阿里云空间 对于滁州地区的阿里云用户来说,如果你的阿里云空间即将过期,你可以通过以下步骤来进行续费: 登录阿里云官网,进入控制台…

    2024年1月30日
    16000
  • 忻州阿里云企业邮箱代理商:阿里邮箱怎么用公司账号登录

    忻州阿里云企业邮箱代理商:阿里邮箱怎么用公司账号登录 阿里云企业邮箱是一款功能强大、安全可靠的企业级邮箱服务,为企业提供了高效沟通和信息管理的解决方案。使用阿里云企业邮箱作为公司的官方邮箱,可以带来许多优势和便利。 一、阿里云企业邮箱的优势 1. 安全可靠:阿里云企业邮箱采用了多重加密技术,保障用户邮件数据的安全性。同时,阿里云的服务器稳定性高,能够充分保证…

    2024年2月9日
    17700
  • 泰安阿里云企业邮箱代理商:阿里云在郑州有研发中心吗是真的吗

    阿里云企业邮箱代理商:阿里云在郑州有研发中心吗? 有关阿里云是否在郑州有研发中心的消息一直备受关注,但目前尚无确凿证据表明阿里云在郑州设有研发中心。然而,阿里云作为中国领先的云计算服务提供商,在全国范围内拥有多个研发中心和数据中心,可提供稳定可靠的服务。 阿里云企业邮箱的优势 作为专业的企业邮箱服务商,阿里云企业邮箱具有以下优势: 安全可靠:采用SSL加密技…

    2024年2月18日
    13700
  • 阿里云企业邮箱的邮件阅读模式能切换背景颜色吗?

    阿里云企业邮箱邮件阅读模式能切换背景颜色吗? 在现代化的办公环境中,企业邮箱的使用已经成为日常工作的重要组成部分。阿里云企业邮箱作为国内领先的企业邮箱服务提供商,以其稳定的服务、高效的管理和丰富的功能深受用户喜爱。很多用户关心的问题之一就是:在阿里云企业邮箱的邮件阅读模式中,是否可以切换背景颜色?本文将详细解答这一问题,并介绍阿里云企业邮箱的其他优势。 邮件…

    2024年10月15日
    8900
  • 邯郸阿里云代理商:api11e

    邯郸阿里云代理商:api11e 阿里云作为全球领先的云计算和人工智能科技公司,为各行各业提供了一系列优秀的产品和解决方案。作为邯郸地区的阿里云代理商,api11e将为您介绍阿里云在以下几个方面的优势。 1. 高效稳定的云计算基础设施 阿里云拥有全球覆盖的数据中心网络,以及高效稳定的云计算基础设施。这使得用户可以享受到可靠、安全、高性能的云服务,为业务的稳定运…

    2024年1月22日
    15300

发表回复

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

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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