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

相关推荐

  • 阿里云国际站注册教程:api 时区

    阿里云国际站注册教程 步骤1:访问阿里云国际站官网 打开浏览器,输入阿里云国际站官网地址:https://www.alibabacloud.com 步骤2:进入注册页面 点击右上角的“Sign Up”按钮,进入注册页面。 在注册页面中,选择您的国家/地区,并填写您的基本信息,包括电子邮件地址和设置密码。 步骤3:验证邮箱 点击“Send”按钮发送验证邮件。 …

    2024年7月11日
    57300
  • 哈密阿里云企业邮箱代理商:阿里云购买域名流程图

    阿里云企业邮箱代理商:阿里云购买域名流程图 随着企业的日益壮大,邮箱的使用越来越普遍。企业邮箱是指以企业域名为后缀的邮箱,比如XXX@company.com。阿里云作为众所周知的云计算服务提供商,其企业邮箱和企业邮箱代理商也备受瞩目。 要想拥有自己的企业邮箱,第一步就需要购买一个域名。下面我们来看一下阿里云购买域名的流程: 阿里云购买域名流程图 阿里云企业邮…

    2024年3月14日
    63400
  • 阿里云企业邮箱:如何通过网页版发送超大附件?

    阿里云企业邮箱:如何通过网页版发送超大附件? 一、阿里云企业邮箱的优势 阿里云企业邮箱作为一款高效、安全的商务沟通工具,凭借其强大的功能和稳定的性能,赢得了众多企业的青睐。以下是阿里云企业邮箱的几大核心优势: 超大附件支持:阿里云企业邮箱支持单封邮件发送高达50MB的附件,远超普通邮箱的附件限制。 安全可靠:采用多重加密技术,确保邮件传输和存储的安全性,防止…

    2025年7月5日
    52700
  • 钉钉会议云录制的视频怎么下载

    钉钉会议云录制的视频无法直接下载。你可以按照以下步骤将钉钉会议云录制的视频保存到手机相册: 打开钉钉手机客户端,进入个人或团队群组会话页面。 点击会议要记录的会话,进入会议页面。 在会议页面下方,选择“更多”图标。 在弹出的菜单中,选择“本地录制”。 在本地录制页面,找到你需要保存的视频录制文件,点击选中文件。 在视频文件下方,点击“保存到手机相册”。 这样…

    2023年10月8日
    2.9K00
  • 邯郸阿里云代理商:android_dialog对话框

    邯郸阿里云代理商为用户提供了丰富的Android对话框服务,其中包括android_dialog对话框。Android对话框是一种用户界面元素,用于在应用程序中显示信息、接受用户输入或进行交互。 Android_dialog对话框提供了多种类型的对话框,包括普通对话框、警告对话框、确认对话框、输入对话框等。用户可以通过简单的调用代码来创建和显示这些对话框,并…

    2024年1月4日
    66900

发表回复

登录后才能评论

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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