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

Like (0)
luotuoemo的头像luotuoemo
Previous 2024年2月10日 13:47
Next 2024年2月10日 14:00

相关推荐

  • 成都阿里云代理商:android短信二进制发送

    在Android中,可以通过短信管理器(SmsManager)的sendDataMessage方法来发送二进制数据短信。这是向特定端口发送数据短信的基本方法,可用于在设备间发送非文本消息(如多媒体消息、应用程序触发消息等)。 以下是一个简单的示例: String phoneNumber = "1234567890"; short port…

    2024年3月13日
    6700
  • 攸县阿里云企业邮箱代理商:阿里云售后人工电话

    欢迎来到 攸县阿里云企业邮箱代理商:阿里云售后人工电话页面 阿里云企业邮箱优势 阿里云企业邮箱是一款基于云服务的企业邮箱解决方案,具有以下优势: 稳定可靠:采用阿里云强大的云计算技术,保证邮箱系统稳定性和可靠性。 安全防护:拥有多层安全防护机制,保障企业邮箱数据的安全。 多功能性:支持多种邮件功能和管理工具,满足企业不同需求。 移动办公:支持移动设备接入,方…

    2024年2月27日
    8700
  • 阿里残疾人云客服招聘

    阿里残疾人云客服招聘是指阿里巴巴集团在招聘云客服人才时,特别关注残疾人群体,提供平等的就业机会。阿里巴巴集团致力于打造包容性和多元化的工作环境,帮助残疾人实现自我价值和职业发展。 阿里巴巴集团通常会发布相关的招聘信息,包括残疾人云客服的职位描述、要求和福利待遇等。感兴趣的求职者可以通过阿里巴巴集团的官方招聘网站或其他招聘渠道了解具体招聘信息并进行申请。 在招…

    2023年10月28日
    8800
  • 阿里云计算是软件吗

    云计算到底是硬件,还是软件 云计算是基于网络并行协同处理的的硬件,当然也需要软件支持 云计算是什么软件?? 云计算是概念。在现有成熟技术的基础上,其实现基础在于虚拟化。只有将云端硬件设备拆分成虚拟可动态分配的设备,才有可能将云端集中的资源分散分发给客户端。因此基于现有IT技术,云计算的实现方法是快速可分发的某种虚拟化技术。 请问各位,云计算是什么,谁能简单的…

    2023年8月29日
    8500
  • 阿里云服务器并发测试

    阿里云服务器怎么进行性能测试? 如果你用Loadrunner进行阿里云服务器部署的项目进行压测的话,那么第一你要保证内网测试,也就是LR在你本机,而负载机必须加到阿里云另一台服务器win or Linux,或者购买另一台windows的阿里云服务器安装LR负载机加到本地。2这样在你测试时候才不用考虑网络带宽(公网)带来的影响,然后你可以用LR进行脚本录制,录…

    2023年8月26日
    9100

发表回复

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

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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