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

相关推荐

  • 阿里云国际服务器使用教程

    阿里云国际服务器使用教程如下: 创建阿里云账号:在阿里云官网上注册一个账号,并完成实名认证。 登录控制台:使用阿里云账号登录阿里云官网,在控制台中找到国际服务器。 购买国际服务器:选择需要的服务器套餐,点击购买并完成支付。 选择地域和配置:根据自己的需求选择服务器所在地域和配置信息。地域的选择会影响服务器的网络延迟和性能。 创建实例:填写服务器的相关信息,包…

    2023年10月24日
    26600
  • 温州阿里云企业邮箱代理商:阿里云备案有什么用

    温州阿里云企业邮箱代理商:阿里云备案有什么用 作为温州阿里云企业邮箱代理商,我们经常接到客户询问阿里云备案的问题。那么,阿里云备案到底有什么用呢? 阿里云备案的作用 阿里云备案是指在中国大陆地区,经营网站或开展在线业务的单位或个人需向中国政府主管部门备案。阿里云备案的主要作用包括: 合法合规:根据中国法律规定,经营网站或开展在线业务的单位或个人必须完成备案手…

    2024年3月14日
    25300
  • 屯昌阿里云企业邮箱代理商:阿里云标准版网站搭建教学视频

    阿里云企业邮箱代理商:阿里云标准版网站搭建教学视频 阿里云企业邮箱是阿里云推出的一款企业级邮箱服务,具有诸多优势。下面将为大家介绍一下阿里云企业邮箱的优势: 优势一:安全稳定 阿里云企业邮箱采用全球领先的反垃圾技术和反病毒引擎,保障企业邮箱安全稳定运行。 优势二:强大的管理功能 阿里云企业邮箱提供企业通讯录、邮件归档等强大的管理功能,帮助企业提高工作效率。 …

    2024年2月26日
    22400
  • 如何远程操作物联网云平台

    信捷物联网触摸屏如何远程控制 信捷物联网触摸屏可以通过远程控制方式来实现对其的控制。具体的步骤如下: 1. 首先,需要在信捷物联网触摸屏上设置远程控制的密码和用户名,并开启远程控制功能。 2. 然后,在远程电脑上下载并安装信源郑捷物联网触摸屏控制软件,并输入正确的用户名和密码进行登录。 3. 登录成功后,就可以通过软件远程控制信捷物联网触摸屏了,可以进行触摸…

    2023年8月26日
    25600
  • 怎么使用阿里云物联网平台

    用阿里云物联网平台还是开源平台好 不宜比较。1、阿里云物联网平台是向下连接海量设备,支撑设备数据采集上云;向上提供云端API,指令数据通过API调用下发至设备端,实现远程控制。2、开源是把源代码开放,使用者只要不违反开源平台的相关规定,就可以进行相关修改开发,Linux系统就是开源系统,只要兄镇纤有能力,就可以修改Linux系统的旅伏内核代码,实现想要的变态…

    2023年8月28日
    23200

发表回复

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

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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