安卓发送短信 结果_发送短信

在Android平台上发送短信,开发者可以使用SmsManager类来实现,这个类提供了一系列的API来处理短信的发送、接收以及管理,下面将详细介绍如何在Android应用中实现发送短信的功能。

安卓发送短信 结果_发送短信
(图片来源网络,侵删)

准备工作

在开始之前,需要在AndroidManifest.xml文件中添加必要的权限:

<usespermission android:name="android.permission.SEND_SMS" />

此权限允许应用发送短信。

使用SmsManager发送短信

需要获取SmsManager的实例,然后利用其sendTextMessage方法发送短信。

获取SmsManager实例

SmsManager smsManager = SmsManager.getDefault();

发送短信

String phoneNumber = "1234567890"; // 目标电话号码
String message = "Hello, this is a test message!"; // 短信内容
// 拆分长短信(如果需要的话)
List<String> parts = smsManager.divideMessage(message);
// 发送多部分短信
for (String part : parts) {
    smsManager.sendTextMessage(phoneNumber, null, part, PendingIntent.getBroadcast(context, 0, new Intent("SMS_SENT"), 0), null);
}

监听短信发送结果

为了知道短信是否成功发送,可以注册一个广播接收器来监听短信发送结果。

创建广播接收器

public class SmsSendBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        switch (getResultCode()) {
            case Activity.RESULT_OK:
                Toast.makeText(context, "SMS sent", Toast.LENGTH_SHORT).show();
                break;
            case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                Toast.makeText(context, "Generic failure", Toast.LENGTH_SHORT).show();
                break;
            case SmsManager.RESULT_ERROR_NO_SERVICE:
                Toast.makeText(context, "No service", Toast.LENGTH_SHORT).show();
                break;
            case SmsManager.RESULT_ERROR_NULL_PDU:
                Toast.makeText(context, "Null PDU", Toast.LENGTH_SHORT).show();
                break;
            case SmsManager.RESULT_ERROR_RADIO_OFF:
                Toast.makeText(context, "Radio off", Toast.LENGTH_SHORT).show();
                break;
        }
    }
}

注册广播接收器

IntentFilter filter = new IntentFilter("SMS_SENT");
registerReceiver(new SmsSendBroadcastReceiver(), filter);

完整的代码示例

下面是一个完整的活动(Activity)示例,展示了如何发送短信并监听发送结果。

public class SendSmsActivity extends AppCompatActivity {
    private static final String TAG = "SendSmsActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_send_sms);
        Button sendButton = findViewById(R.id.send_button);
        sendButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sendSms();
            }
        });
    }
    private void sendSms() {
        String phoneNumber = "1234567890"; // 目标电话号码
        String message = "Hello, this is a test message!"; // 短信内容
        SmsManager smsManager = SmsManager.getDefault();
        // 拆分长短信(如果需要的话)
        List<String> parts = smsManager.divideMessage(message);
        // 发送多部分短信
        for (String part : parts) {
            smsManager.sendTextMessage(phoneNumber, null, part, PendingIntent.getBroadcast(this, 0, new Intent("SMS_SENT"), 0), null);
        }
        // 注册广播接收器来监听短信发送结果
        IntentFilter filter = new IntentFilter("SMS_SENT");
        registerReceiver(new SmsSendBroadcastReceiver(), filter);
    }
    public class SmsSendBroadcastReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            switch (getResultCode()) {
                case Activity.RESULT_OK:
                    Toast.makeText(context, "SMS sent", Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                    Toast.makeText(context, "Generic failure", Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_NO_SERVICE:
                    Toast.makeText(context, "No service", Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_NULL_PDU:
                    Toast.makeText(context, "Null PDU", Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_RADIO_OFF:
                    Toast.makeText(context, "Radio off", Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    }
}

注意事项

确保在真实设备上测试短信发送功能,因为模拟器可能不支持这一功能。

考虑到用户隐私和费用,确保在应用中明确告知用户短信发送行为,并提供选项让用户同意或拒绝。

检查设备是否具有发送短信的能力,某些平板电脑可能不支持短信功能。

遵守相关的法律法规,不要滥用短信发送功能

FAQs

Q1: 为什么无法在模拟器上发送短信?

A1: Android模拟器通常不支持发送实际的SMS消息,它主要用于开发和测试应用的行为,而不是执行实际的硬件操作,如发送短信,要测试短信发送功能,您需要在真实的Android设备上进行。

Q2: 如果用户没有给予SEND_SMS权限会怎么样?

A2: 如果应用尝试发送短信但未获得用户的SEND_SMS权限,将会抛出SecurityException异常,最好在尝试发送短信之前检查并请求必要的权限。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/684606.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希新媒体运营
上一篇 2024-06-13 01:37
下一篇 2024-06-13 01:39

相关推荐

发表回复

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

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入