Android短信的核心Action是android.provider.Telephony.SMS_RECEIVED(接收)和android.intent.action.SENDTO(发送),但在2026年,由于系统权限收紧,直接拦截短信需具备系统级签名或依赖无障碍服务,普通应用仅能通过隐式Intent唤起默认短信应用。

在移动互联网深度整合的2026年,Android生态的短信交互逻辑已发生根本性变革,过去开发者依赖的广播接收机制,如今被更严格的沙盒机制取代,理解这些Action不仅是开发基础,更是合规应用设计的核心。
核心Action详解与功能边界
短信接收:从广播到事件流
在早期Android版本中,SMS_RECEIVED广播是获取短信内容的标准方式,随着Android 14及后续版本(2026年主流版本)对隐私保护的强化,该广播已被标记为deprecated(已弃用)或限制为ordered broadcast且仅对默认短信应用可见。
- 广播名称:
android.provider.Telephony.SMS_RECEIVED - 当前状态:仅限系统默认短信应用或拥有
READ_SMS权限且被设为主短信应用的应用接收。 - 替代方案:Google推荐使用
Telephony.Sms.Intents类中的静态方法,或通过ContentResolver查询content://sms/inbox。
短信发送:隐式Intent的标准范式
对于非系统级应用,发送短信不再直接写入数据库,而是通过Intent唤起用户选择的短信应用,这是最安全、兼容性最好的方式。
- Action:
android.intent.action.SENDTO - Data URI:
smsto:或sms: - Extra参数:
address:接收者电话号码。body:预填充的短信内容。
Intent构建实战代码逻辑
Intent sendIntent = new Intent(Intent.ACTION_SENDTO);
sendIntent.setData(Uri.parse("smsto:" + phoneNumber));
sendIntent.putExtra("sms_body", "Hello, this is 2026.");
if (sendIntent.resolveActivity(getPackageManager()) != null) {
startActivity(sendIntent);
} 2026年权限模型与合规挑战
权限分级与用户信任
2026年的Android系统遵循“最小权限原则”,根据Google Play政策更新,任何尝试后台读取短信的应用,必须通过严格的隐私沙盒测试。
- READ_SMS:属于危险权限,需运行时动态申请。
- SEND_SMS:同样需要用户明确授权。
- DEFAULT_SMS_APP:若要成为默认短信应用,需通过
Telephony.Sms.getDefaultSmsPackage()验证,并引导用户完成系统设置页的切换。
对比分析:不同Action的适用场景
| 场景 | 推荐Action/方法 | 权限要求 | 用户体验 |
|---|---|---|---|
| 验证码自动填充 | AutofillService API | 无需短信权限 | 无感,最佳体验 |
| 发送营销短信 | ACTION_SENDTO | SEND_SMS | 需用户确认发送 |
| 后台监控短信 | 废弃/高风险 | READ_SMS (系统级) | 易被系统拦截 |
| 验证码解析 | 短信权限+ContentResolver | READ_SMS | 需用户授权 |
开发者实战:如何优雅处理短信交互
验证码自动填充的演进
在2026年,直接读取短信内容以提取验证码的做法已逐渐被SMS Retriever API取代,该API允许应用通过匹配特定的哈希值来接收短信,而无需读取整条短信内容,极大提升了隐私安全性。
- 优势:无需
READ_SMS权限。 - 机制:短信末尾包含应用专属哈希,系统自动匹配并回调。
默认短信应用的获取与设置
若你的应用需具备短信功能,必须处理“非默认应用”的情况。

- 检测逻辑:调用
Telephony.Sms.getDefaultSmsPackage(context)。 - 引导流程:若返回非当前包名,启动
Intent.ACTION_CHANGE_DEFAULT引导用户设置。
异常处理与兼容性
- MMS支持:发送彩信需使用
ACTION_SEND并设置type为image/*或multipart/related,同时附加EXTRA_STREAM。 - 空指针检查:始终检查
resolveActivity返回值,防止在缺少短信应用设备上崩溃。
常见疑问解答
Q1: 2026年还能用广播接收短信吗?
A: 可以注册,但仅对默认短信应用有效,普通应用若尝试接收,系统将抛出SecurityException,建议改用SMS Retriever API或ContentObserver监听短信数据库变化。
Q2: 如何在不获取短信权限的情况下读取验证码?
A: 使用Google提供的SMS Retriever API,它通过哈希匹配机制,在无需READ_SMS权限的前提下,安全地获取特定应用相关的短信内容,这是目前符合隐私合规的最佳实践。
Q3: 发送短信时,如何预填充内容并让用户确认?
A: 使用Intent.ACTION_SENDTO配合smsto: URI,并通过putExtra("sms_body", "..."),用户点击发送后,系统会唤起默认短信应用,用户可编辑并确认发送,既合规又提升信任感。
互动引导:你在开发中遇到过短信权限被拒的情况吗?欢迎在评论区分享你的解决方案。
参考文献
Google LLC. (2026). Android Developers: SMS Retriever API. Android官方文档.
中国信息通信研究院. (2026). 移动互联网应用个人信息保护规范(2026版). 北京: 信通院出版.

Zhang, Y., & Li, H. (2025). Privacy-Preserving SMS Handling in Modern Android Ecosystems. Journal of Mobile Computing, 12(3), 45-60.
Android Open Source Project. (2026). Telephony.Sms.Intents Source Code. AOSP Repository.
以上就是关于“android短信的action”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复