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

相关推荐

  • 邳州阿里云企业邮箱代理商:阿里企业邮箱使用方法是什么

    邳州阿里云企业邮箱代理商:阿里企业邮箱使用方法 阿里企业邮箱优势 阿里企业邮箱是一款全功能的企业级邮箱服务,拥有以下优势: 高安全性:阿里云提供了强大的安全保障措施,包括SSL加密传输、反垃圾邮件系统、病毒过滤等,保障企业信息的安全。 稳定可靠:阿里云拥有多个数据中心和服务器集群,保证企业邮箱的高可用性和稳定性。 大容量存储:阿里企业邮箱提供丰富的存储空间,…

    2024年1月21日
    13700
  • 不用云平台怎么实现物联网连接

    如何实现物联网传输终端间的通信 数据一般存放云端!终端 A 获取云端数据,并上传相关数据到云端终端 B 获取云端数据,并上传相关数据到云端。。。。。这样不就进行了数据交换 个人物联网是怎么一种实现? 物联网是基于互联网的网络,融合之后形成的新网络。物联网有自己的域名,叫做物联网域名。个人物联网,应该是要靠个人物联网域名来实现的,主要用于个人日常生活的。 物联…

    2023年8月28日
    11500
  • 漳州阿里云代理商:android上传到服务器

    漳州阿里云代理商可以提供一种将Android应用程序上传到服务器的解决方案,以下是一种常见的方法: 在阿里云服务器上创建一个存储空间或者虚拟主机(如ECS实例)来存储Android应用程序的文件。 在Android应用程序的代码中添加上传文件的功能。可以使用一些开源库如OkHttp或HttpClient来进行文件上传。 在Android应用程序中提供用户界面…

    2024年2月10日
    10400
  • 澳门阿里云代理商:安骑士软件如何

    安骑士软件是一款由澳门阿里云代理商推出的网络安全解决方案。它基于阿里云强大的云计算和大数据分析能力,为企业提供全面的网络安全保护。 安骑士软件主要具有以下几个特点和功能: 高性能的安全防御能力:安骑士软件集成了阿里云的DDoS攻击防御、WEB应用防火墙、入侵检测系统等功能,可以有效地抵御各种网络攻击。 智能风控和威胁情报:安骑士软件通过大数据分析,实时监测和…

    2023年12月14日
    9400
  • 株洲阿里云代理商:阿里云os系统如何升级系统升级

    阿里云操作系统升级是指对服务器操作系统进行更新、修复和升级的过程。以下是升级阿里云操作系统的一般步骤: 登录阿里云控制台:打开浏览器,访问阿里云官网并登录您的账户。 导航到ECS实例:在阿里云控制台,选择“云服务器ECS”选项。 选择需要升级的实例:找到需要进行系统升级的ECS实例,并点击实例名称进入详情页。 创建系统镜像:在实例详情页,点击“更多”下拉菜单…

    2024年1月30日
    12300

发表回复

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

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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