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

相关推荐

  • 物联网项目都需要云服务器吗

    物联网是不是一定需要自己有服务器才可以做 不是,可以用云平台,就是以后容量大了,恐怕还是需要自己的服务器才好 未来的物联网需要后台服务器吗?会跟java沾边吗 必须会,从目前来看很多物联网服务使用的就是java语言。不过也有可能会出现新的语言来代替 物联网公司用的什么云端服务器啊? 云服务器是多台服务器组成的一个资源池。任何一台服务器损坏对你的网站几乎没什么…

    2023年8月28日
    19800
  • 广州阿里云代理商:安全组配置80

    广州阿里云代理商为客户提供云计算服务,其中包括安全组配置。在配置安全组时,需要指定规则来控制对云服务器80端口的访问。 具体操作步骤如下: 登录阿里云控制台,选择对应的区域,进入云服务器ECS控制台。 找到需要配置安全组的实例,点击实例名进入详细信息页面。 在左侧导航栏中,选择“安全组”选项。 在安全组页面中,点击“配置规则”按钮。 在配置规则页面中,点击“…

    2024年1月2日
    19000
  • 长春阿里云代理商:阿里云域名黑名单

    长春阿里云代理商:阿里云域名黑名单 优势一:稳定可靠的服务器性能 阿里云作为国内领先的云服务提供商,拥有强大的服务器基础设施,保证了稳定可靠的服务器性能。无论是网站访问速度还是数据传输效率,都能够得到充分保障。 优势二:全球覆盖的服务器节点 阿里云在全球范围内部署了众多服务器节点,可以满足不同地区用户的需求。无论你在哪个国家或地区,都能够享受到高速稳定的云计…

    2024年1月31日
    21700
  • 阿里云媒体服务

    阿里云媒体服务(Alibaba Cloud Media Services)是阿里云提供的一系列视频、音频、图片等媒体相关的云服务。它包括以下产品: 视频直播服务(LiveVideo):提供基于云端的实时视频直播解决方案,可以实现高可靠、低延迟的视频直播服务,支持多平台、多终端观看。 视频点播服务(VOD):提供强大的视频点播解决方案,包括视频上传、转码、存储…

    2023年10月27日
    24900
  • 吐鲁番阿里云企业邮箱代理商:阿里云邮箱个人邮箱后缀

    吐鲁番阿里云企业邮箱代理商:阿里云邮箱个人邮箱后缀 阿里云企业邮箱是一款功能强大、安全可靠的企业级邮箱服务。作为吐鲁番的阿里云企业邮箱代理商,我们为您带来个人邮箱后缀的种种优势,让您在使用企业邮箱后感受到全新的工作体验。 1. 专业形象展示 个人邮箱后缀提供了一种专业形象展示的方式。通过使用公司域名作为邮箱后缀,您的邮件地址将变得更加专业和正式,给合作伙伴、…

    2024年2月2日
    19300

发表回复

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

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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