Android - Sending SMS 发送短信
封面图
•
2025-10-27
•
Android开发
204
0
0
0
在 Android 上发送短信(SMS)可以通过多种方式实现,具体取决于你的需求和使用场景。以下是几种常见的方法: --- ## ✅ 方法一:使用 `Intent` 发送短信(推荐用于用户交互) 这种方式通过系统自带的短信应用来发送短信,适用于你希望用户确认并手动发送的情况。 ### 示例代码(Kotlin): ```kotlin val intent = Intent(Intent.ACTION_SENDTO).apply { data = Uri.parse("smsto:") // 仅限短信 putExtra("sms_body", "这是一条测试短信") // 短信内容 putExtra("address", "+8613800000000") // 接收人手机号 } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } ``` ### 注意事项: - 用户需要手动点击“发送”按钮。 - 需要添加权限(虽然不是必须,但建议添加): ```xml <uses-permission android:name="android.permission.SEND_SMS" /> ``` --- ## ✅ 方法二:使用 `SmsManager` 发送短信(无需用户交互) 这种方法可以**直接发送短信**,不需要用户手动点击发送,但需要 **`SEND_SMS` 权限**,并且在某些设备上可能受到限制(如 Android 10 及以上版本)。 ### 示例代码(Kotlin): ```kotlin val smsManager = SmsManager.getDefault() // 发送短信 smsManager.sendTextMessage("+8613800000000", null, "这是一条测试短信", null, null) ``` ### 需要的权限(AndroidManifest.xml): ```xml <uses-permission android:name="android.permission.SEND_SMS" /> ``` ### 注意事项: - 在 Android 10 及以上版本中,`sendTextMessage()` 被标记为 **过时**,推荐使用 `sendMms()` 或者使用 `SmsManager` 的新 API。 - 某些手机厂商(如小米、华为)可能会阻止此类操作,需检查是否开启“允许后台发送短信”等设置。 --- ## ✅ 方法三:使用 `SmsManager` 的新 API(适用于 Android 10+) ```kotlin val smsManager = SmsManager.getDefault() val message = "这是一条测试短信" val destinationAddress = "+8613800000000" smsManager.sendTextMessage(destinationAddress, null, message, null, null) ``` > 与旧方法类似,但在部分系统上可能仍然受限。 --- ## 🛡️ 安全与限制 - **Android 10 及以上版本**:Google 对后台发送短信进行了限制,即使你有 `SEND_SMS` 权限,也可能无法成功发送。 - **系统级权限**:只有系统应用或具有特殊权限的应用才能绕过这些限制。 - **用户隐私**:发送短信涉及用户隐私,应确保合法合规使用。 --- ## 📌 总结 | 方法 | 是否需要用户交互 | 是否需要权限 | 适用场景 | |------|------------------|---------------|----------| | `Intent` | 是 | 否(可选) | 用户确认后发送 | | `SmsManager` | 否 | 是 | 自动发送(受系统限制) | --- 如果你是开发人员,想在应用中实现自动发送短信功能,请注意遵守 Google Play 的政策和 Android 的安全策略。 如需进一步帮助(例如处理发送状态、多段短信等),欢迎继续提问!
上一篇:
Android - Phone Calls功能
下一篇:
Android - Sending Email功能
标题录入,一次不能超过6条
留言
评论