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

相关推荐

  • 兰州阿里云代理商:安装sql的服务器配置

    安装SQL的服务器配置可以根据需求和实际情况进行调整,以下是一些常见的配置要点: CPU:SQL服务器对于数据处理和查询操作的性能要求较高,因此建议选择多核心的CPU,如8核或更高。 内存:SQL服务器的内存大小对于数据库的性能和并发连接数有着重要影响。建议至少选择16GB以上的内存,并根据数据库的大小和负载情况进行调整。 存储:阿里云提供多种存储选项,包括…

    2024年2月9日
    14700
  • 阿里云数据库高权限账户怎么设置

    要设置阿里云数据库高权限账户,你可以按照以下步骤进行操作: 登录阿里云控制台,选择你的数据库实例所在的地域和实例。 在实例基本信息页面,找到左侧导航栏中的“账号管理”选项,点击进入账号管理页面。 在账号管理页面,点击“创建账号”按钮。 在账号创建页面,填写账号名称、密码以及账号权限。为了设置高权限账户,你可以将账号权限设置为“高权限”。 选择需要授权给该账号…

    2023年10月1日
    18100
  • 大连阿里云代理商:安卓上传图片给服务器file

    在安卓应用中,可以通过以下步骤将图片上传给服务器: 首先,确保您的应用程序具有相应的权限来访问设备存储和相机功能。您可以在AndroidManifest.xml文件中添加下面的权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /…

    2024年2月9日
    16900
  • 阿里巴巴云计算北京第一分公司

    阿里云北京最大代理商是哪家 阿里云创立于2009年,是全球领先的云计算及人工智能科技公司,为200多个国家和地区的企业、开发者和政府机构提供服务。2017年1月阿里云成为奥运会全球指定云服务商。2017年8月阿里巴巴财报数据显示,阿里云付费云计算用户超过100万。阿里云致力于以在线公共服务的方式,提供安全、可靠的计算和数据处理能力,让计算和人工智能成为普惠科…

    2023年8月28日
    14700
  • 衡水阿里云企业邮箱代理商:阿里邮箱格式怎么写的

    阿里云企业邮箱代理商:阿里邮箱格式怎么写的 阿里云企业邮箱是一款强大的企业邮箱解决方案,提供了多种邮件管理和协作工具,可以满足企业日常沟通和信息管理的需求。下面我们将介绍阿里云企业邮箱的格式以及阿里云企业邮箱代理商的优势。 阿里邮箱格式 阿里云企业邮箱的邮件地址格式为:用户名@企业域名。其中,用户名可以由字母、数字和下划线组成,长度最长为64个字符;企业域名…

    2024年2月12日
    20500

发表回复

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

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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