云主机测评网云主机测评网云主机测评网

云主机测评网
www.yunzhuji.net

Android发送短信后返回值是什么?

Android发送短信返回值通常是一个整型值,表示操作的结果。常见的返回值包括:,SMS_SUCCESS(值为0):短信发送成功。,ERROR_INVALID_ARGUMENTS(值为-1):无效的参数。,ERROR_NO_SMS_PERMISSION(值为-2):没有短信权限。,ERROR_PHONE_NUMBER_BLOCKED(值为-3):电话号码被阻止。,ERROR_NULL_PDU(值为-4):PDU为空。,ERROR_RADIO_NOT_AVAILABLE(值为-5):无线电不可用。,ERROR_CALL_IN_PROGRESS(值为-6):通话正在进行中。,ERROR_SIM_ABSENT(值为-7):SIM卡不存在。,ERROR_SIM_FULL(值为-8):SIM卡已满。,ERROR_NETWORK_BUSY(值为-9):网络繁忙。,ERROR_GENERIC_FAILURE(值为-10):通用失败。

Android发送短信返回值详解

在Android应用开发中,发送短信是一项常见的功能需求,为了实现这一功能,开发者通常会使用SmsManager类来发送短信,了解发送短信的返回值对于处理发送状态和错误至关重要,本文将详细解析Android发送短信的返回值,并通过单元表格的形式展示不同返回值的含义及其处理方法。

一、SmsManager.RESULT_*常量解析

在Android中,SmsManager.RESULT_常量用于表示发送短信的结果,以下是一些关键的常量及其含义:

常量名称 含义
SmsManager.RESULT_SMS_SUCCESS 短信成功发送到目标号码。
SmsManager.RESULT_MMS_SUCCESS 多媒体短信(MMS)成功发送到目标号码。
SmsManager.RESULT_ERROR_NO_SERVICE 设备没有信号或未连接到移动网络。
SmsManager.RESULT_ERROR_NULL_PDU 提供的PDU为null,无法发送短信。
SmsManager.RESULT_ERROR_GENERIC_FAILURE 发送短信时发生未知错误。
SmsManager.RESULT_ERROR_RADIO_OFF 设备的无线功能被关闭,无法发送短信。
SmsManager.RESULT_ERROR_SIM_ABSENT 设备中没有插入SIM卡,无法发送短信。
SmsManager.RESULT_ERROR_SIM_LOCKED SIM卡被锁定,无法发送短信。
SmsManager.RESULT_ERROR_NO_MEMORY 设备内存不足,无法发送短信。
SmsManager.RESULT_ERROR_OOM 由于内存溢出,无法发送短信。
SmsManager.RESULT_ERROR_UNABLE_TO_CONNECT 无法连接到移动网络,可能是由于网络问题或设备设置问题。

二、发送短信示例代码及返回值处理

以下是一个使用SmsManager发送短信的示例代码,以及如何处理不同的返回值:

import android.telephony.SmsManager;
import android.content.Context;
import android.widget.Toast;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String phoneNumber = "1234567890"; // 替换为目标手机号码
        String message = "Hello, this is a test SMS!";
        sendSMS(phoneNumber, message);
    }
    private void sendSMS(String phoneNumber, String message) {
        SmsManager smsManager = SmsManager.getDefault();
        smsManager.sendTextMessage(phoneNumber, null, message, null, null);
    }
}

在上述代码中,我们调用了SmsManagersendTextMessage方法来发送短信,这个方法接受五个参数:目标手机号、短信中心号码(通常为null)、短信内容、一个PendingIntent(用于接收发送状态),以及一个Handler(用于处理超时),在这个例子中,我们将PendingIntent和Handler都设置为null,因为我们将在后续步骤中手动检查发送状态。

三、处理发送状态

为了处理发送状态,我们需要创建一个BroadcastReceiver来监听发送结果,以下是如何创建和使用BroadcastReceiver来处理发送状态的示例代码:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsManager;
import android.widget.Toast;
public class SmsSentReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        switch (getResultCode()) {
            case Activity.RESULT_OK:
                Toast.makeText(context, "SMS sent successfully!", Toast.LENGTH_SHORT).show();
                break;
            case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                Toast.makeText(context, "Generic failure", Toast.LENGTH_SHORT).show();
                break;
            // 其他错误处理...
            default:
                Toast.makeText(context, "Error code: " + getResultCode(), Toast.LENGTH_SHORT).show();
                break;
        }
    }
}

在MainActivity中注册这个BroadcastReceiver:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    String phoneNumber = "1234567890"; // 替换为目标手机号码
    String message = "Hello, this is a test SMS!";
    sendSMS(phoneNumber, message);
}
private void sendSMS(String phoneNumber, String message) {
    SmsManager smsManager = SmsManager.getDefault();
    Intent sentIntent = new Intent(this, SmsSentReceiver.class);
    PendingIntent piSend = PendingIntent.getBroadcast(this, 0, sentIntent, 0);
    smsManager.sendTextMessage(phoneNumber, null, message, piSend, null);
}

通过这种方式,我们可以捕获并处理短信发送的各种结果,从而为用户提供更好的反馈和错误处理机制。

打赏
版权声明:主机测评不销售、不代购、不提供任何支持,仅分享信息/测评(有时效性),自行辨别,请遵纪守法文明上网。
文章名称:《Android发送短信后返回值是什么?》
文章链接:https://www.yunzhuji.net/wangzhanyunwei/135605.html

评论

  • 验证码