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

相关推荐

  • 湖州阿里云代理商:阿里云devops

    阿里云是一家全球领先的云计算服务商,提供各种云计算产品和解决方案。其中,阿里云DevOps是一套为开发者和运维团队提供全流程、全周期的云原生应用开发、交付和运维一体化解决方案。 作为湖州的阿里云代理商,我们可以为客户提供以下服务: 云计算咨询:了解客户需求,提供合适的云计算解决方案,包括计算、存储、网络等基础设施方面的选型和规划。 DevOps咨询和规划:根…

    2024年1月9日
    73600
  • 阿里云企业邮箱的缓存管理能提高邮件列表的加载速度吗?

    阿里云企业邮箱的缓存管理如何提高邮件列表加载速度 随着企业对邮件通信的依赖不断增加,邮件系统的性能直接影响办公效率。阿里云企业邮箱在缓存管理方面的优化,有效提升了邮件列表的加载速度,为用户带来更流畅的使用体验。本文将从缓存机制的作用、阿里云企业邮箱的功能优势及使用体验等角度,详细解析这一服务如何提升效率。 缓存管理的核心:减少服务器请求 缓存管理的基本原理是…

    2024年10月29日
    56800
  • 企业员工对阿里云企业邮箱的新功能界面友好性反馈?

    企业员工对阿里云企业邮箱新功能界面友好性反馈 1. 界面简洁直观,用户易上手 阿里云企业邮箱的界面设计非常注重用户体验,整体风格简洁明了,操作流程简单,即使是非技术背景的员工也能够快速掌握基本操作。这种友好的设计使得新用户可以迅速上手,不需要过多培训便可高效使用。这对于企业来说,不仅减少了培训时间与成本,还提升了员工的工作效率,促进了信息传递的流畅性。 2.…

    2024年10月30日
    61100
  • 阿里云企业邮箱代理商:阿里云企业邮箱的外贸邮版本是如何保证跨境电商与海外消费者沟通的安全性的?

    阿里云企业邮箱代理商:阿里云企业邮箱的外贸邮版本如何保障跨境电商与海外消费者沟通安全? 一、引言:跨境电商的沟通安全挑战 随着全球化贸易的深入发展,跨境电商企业与海外消费者的邮件往来日益频繁。然而,国际通信中常面临数据泄露、垃圾邮件泛滥、网络钓鱼等安全风险。阿里云企业邮箱针对外贸场景推出的“外贸邮版本”,通过多项核心技术为跨境企业提供安全高效的沟通解决方案。…

    2025年10月27日
    40000
  • 温州阿里云代理商:阿里云软件怎么用

    阿里云是一家云计算领域的领军企业,提供各种云服务和解决方案。以下是如何使用阿里云软件的一般步骤: 注册阿里云账号:在阿里云官网上注册一个账号。你需要提供一些个人信息和联系方式。 登录阿里云控制台:使用你的阿里云账号登录阿里云控制台,该控制台是管理和操作阿里云各项服务的平台。 浏览产品列表:登陆后,在控制台中,你可以看到各种阿里云的产品和服务,例如云服务器、数…

    2024年2月7日
    68900

发表回复

登录后才能评论

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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