在Android开发中,发送短信通常需要使用到短信管理器(SmsManager)类。以下是一个基本的示例代码,展示了如何在Android应用中发送短信。请注意,发送短信通常需要用户的权限,因此你需要在你的应用中请求相应的权限。此外,由于安全和隐私原因,某些功能可能因设备或操作系统版本而异。

确保在你的AndroidManifest.xml文件中添加了发送短信的权限:
<uses-permission android:name="android.permission.SEND_SMS"/>
你可以使用以下代码来发送短信:
import android.content.Context;
import android.telephony.SmsManager;
import android.util.Log;
public class SmsSender {
private Context context;
public SmsSender(Context context) {
this.context = context;
}
public void sendSms(String phoneNumber, String message) {
SmsManager smsManager = SmsManager.getDefault(); // 获取默认的SmsManager实例
String SENT = "SMS_SENT"; // 常量用于标识短信是否成功发送的状态广播接收器名称
PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, new SmsBroadcastReceiver().setIntentAction(SENT), PendingIntent.FLAG_UPDATE_CURRENT); // 创建用于接收短信发送状态的PendingIntent对象
smsManager.sendTextMessage(phoneNumber, null, message, sentPI, null); // 发送短信并注册状态广播接收器以获取发送状态信息
}
}在这个例子中,你需要创建一个名为SmsBroadcastReceiver的BroadcastReceiver类来处理短信发送的状态信息,这个类可能看起来像这样:
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsManager;
import android.util.Log;
import android.widget.Toast;
import static android.telephony.SmsManager.*; // 用于静态方法调用简化代码书写方式,如RESULT_ERROR_GENERIC_FAILURE等错误代码定义在此处导入,具体错误代码可以在官方文档中找到,这里只是一个示例,实际使用时需要根据具体情况进行修改。
public class SmsBroadcastReceiver extends BroadcastReceiver { // 用于接收短信发送状态信息的广播接收器类,当短信发送成功或失败时,会触发相应的回调函数,在这个回调函数中,你可以进行一些操作,比如显示一个通知或者更新UI等,具体的操作取决于你的需求,这里只是一个示例,实际使用时需要根据具体情况进行修改,public void onReceive(Context context, Intent intent) { // 当接收到短信发送状态信息时执行的回调函数,在这个函数中,你可以获取到短信的发送状态信息(成功或失败),并进行相应的处理,具体的处理逻辑取决于你的需求,这里只是一个示例,实际使用时需要根据具体情况进行修改,Log.i("SmsBroadcastReceiver", "Received result - "); Log.i("SmsBroadcastReceiver", getResultExtras().getString(STATUS)); // 打印短信发送状态信息 switch (getResultCode()) { case RESULT_ERROR_GENERIC_FAILURE: Toast.makeText(context, "短信发送失败", Toast.LENGTH_SHORT).show(); break; case RESULT_ERROR_NO_SERVICE: Toast.makeText(context, "无服务", Toast.LENGTH_SHORT).show(); break; case RESULT_ERROR_NULL_PDU: Toast.makeText(context, "PDU为空", Toast.LENGTH_SHORT).show(); break; case RESULT_OK: Toast.makeText(context, "短信发送成功", Toast.LENGTH_SHORT).show(); break; } } }```在这个例子中,当短信发送成功或失败时,会触发SmsBroadcastReceiver的onReceive方法,在这个方法中,你可以获取到短信的发送状态信息并进行相应的处理,你可以显示一个通知或者更新UI等,具体的处理逻辑取决于你的需求,这是一个简单的示例代码,实际使用时可能需要根据具体情况进行修改和调整。









