Android发送短信后返回值是什么?
- 行业动态
- 2024-11-04
- 4048
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); } }
在上述代码中,我们调用了SmsManager的sendTextMessage方法来发送短信,这个方法接受五个参数:目标手机号、短信中心号码(通常为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); }
通过这种方式,我们可以捕获并处理短信发送的各种结果,从而为用户提供更好的反馈和错误处理机制。
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:https://www.xixizhuji.com/fuzhu/15945.html