357 字
2 分钟
无障碍服务自动点发送:SuperSMS 的核心黑科技

链路总览#

服务端拉取待发短信
-> smsto: 调起系统默认短信 App(内容预填)
-> AutoSmsAccessibilityService 找到发送按钮并点击
-> 回到宿主 App
-> 发送结果本地缓存,宿主回前台后消费

Android 不允许第三方 App 静默发短信(要 SEND_SMS 强权限且上架受限),于是走“系统 App 代发 + 无障碍辅助点击”的合规路线:真正点发送的是用户手机里的系统短信应用,SDK 只是帮用户省了那一下手指。

无障碍服务的正确姿势#

accessibility/AutoSmsAccessibilityService.java + res/xml/supersdk_auto_sms_accessibility_service.xml 声明服务能力。关键细节:

  • 只在发送流程中激活找按钮,不常驻监听,耗电与隐私影响最小
  • 按文本/控件特征查找发送按钮,多语言 ROM 兼容要实测(这也是 SuperSmsTestActivity 联调页存在的意义)
  • 发完主动回宿主,任务闭环,不把用户晾在短信 App 里

结果缓存:异步的体面收尾#

发送结果不强求实时上报(服务端接口还没 ready),先本地缓存,宿主回前台后消费。README 诚实写明“发送结果上报接口后续再接”——把未完成项写进文档,比藏着强一百倍

合规约束下的自动化:权限不够,就用系统能力 + 无障碍拼出体验,前提是只做用户明确授权的事。