移除验证码解析功能,简化为纯短信转发
- 删除 VerificationCodeParser 及相关测试,短信捕获和推送不再解析验证码 - 飞书推送改为只发送短信原文,时间戳格式化为可读日期 - 移除主界面"只推送验证码"开关和"调试时上传完整短信正文"选项 - 移除"保存轮询间隔"按钮,开启轮询时自动保存间隔(未输入默认1秒) - 按钮文字从"开始1秒轮询验证码"改为"开始短信轮询" - 删除"打印最近30条短信"功能及相关 SmsInboxReader.logRecentMessages - SmsInboxReader 用 RecentSmsResult 替换 RecentCodeResult - FeishuWebhookConfigStore.Config 移除 filterVerificationCode/sendFullBodyDebug - 修复代码缩进不一致问题
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
## Context
|
||||
|
||||
当前 app 已有短信验证码接收实现:Manifest 声明了 `RECEIVE_SMS`、`READ_SMS`,静态 `SmsReceiver` 监听 `android.provider.Telephony.SMS_RECEIVED`,`MainActivity` 提供权限申请、最近结果展示、`READ_SMS` 最新短信读取、ContentObserver 和短时轮询诊断。用户反馈“逻辑试过了能用”,但不确定为什么某些场景 `onReceive` 收不到。
|
||||
当前 app 已有短信原文接收实现:Manifest 声明了 `RECEIVE_SMS`、`READ_SMS`,静态 `SmsReceiver` 监听 `android.provider.Telephony.SMS_RECEIVED`,`MainActivity` 提供权限申请、最近结果展示、`READ_SMS` 最新短信读取、ContentObserver 和短时轮询诊断。用户反馈“逻辑试过了能用”,但不确定为什么某些场景 `onReceive` 收不到。
|
||||
|
||||
目标设备是小米 12S、澎湃 OS 3、Android 15。根据 Android 官方文档,`RECEIVE_SMS` 允许应用接收 SMS,但它是 dangerous 且 hard restricted 权限,是否能真正持有可能受安装来源/安装器 allowlist 影响。Android 15 又新增了 `BOOT_COMPLETED` 启动部分前台服务类型的限制;Doze/App Standby 白名单也不是无限制后台执行。小米官方支持文档说明 HyperOS/小米系统存在“Background autostart”用户开关,路径为 Settings > Apps > Permissions > Background autostart。
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
### 1. 系统短信广播仍是主路径
|
||||
|
||||
短信进入设备时,主路径仍是 `SMS_RECEIVED_ACTION`。这是最直接的验证码捕获路径,但它依赖:
|
||||
短信进入设备时,主路径仍是 `SMS_RECEIVED_ACTION`。这是最直接的短信原文捕获路径,但它依赖:
|
||||
|
||||
- 应用真正持有 `RECEIVE_SMS`。
|
||||
- 应用未被用户 force-stop。
|
||||
@@ -129,7 +129,7 @@ Android 标准能力:
|
||||
2. 发送短信时抓 logcat `SmsReceive`。
|
||||
3. 如果 receiver 无日志,点“读取最新短信”确认短信是否入库。
|
||||
4. 如果短信已入库但 receiver 无日志,重点排查权限、force-stop、HyperOS 自启动和省电。
|
||||
5. 如果 receiver 有日志但无验证码,排查 PDU/body/parser。
|
||||
5. 如果 receiver 有日志但无短信结果,排查 PDU/body/读取链路。
|
||||
|
||||
## Data Model
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
## Why
|
||||
|
||||
当前 `SmsReceive` 已经能在部分场景接收并解析验证码短信,但目标设备是小米 12S、澎湃 OS 3、Android 15,后台策略比标准 Android 更激进。仅靠 `SMS_RECEIVED_ACTION` 静态广播不够,需要补齐“开机后自动恢复监听、后台运行可见、系统设置可引导、失败可诊断”的完整方案。
|
||||
当前 `SmsReceive` 已经能在部分场景接收并展示短信原文,但目标设备是小米 12S、澎湃 OS 3、Android 15,后台策略比标准 Android 更激进。仅靠 `SMS_RECEIVED_ACTION` 静态广播不够,需要补齐“开机后自动恢复监听、后台运行可见、系统设置可引导、失败可诊断”的完整方案。
|
||||
|
||||
这次需求的重点不是规避系统限制,而是在个人自用 sideload/debug app 的边界内,把 Android 官方后台机制、HyperOS 人工设置、短信广播兜底路径和可验证诊断组合起来。用户也会手动在小米设置中开启“自启动”和“省电策略-无限制”,因此方案应显式利用这个前提。
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
- [x] 6.1 记录最近一次 `system_sms_broadcast` 到达时间
|
||||
- [x] 6.2 记录最近一次 `sms_inbox_observer`、`sms_inbox_manual`、`sms_inbox_polling` 命中时间
|
||||
- [x] 6.3 当收件箱兜底发现新验证码但广播未到达时,展示“疑似短信广播未投递”
|
||||
- [x] 6.3 当收件箱兜底发现新短信但广播未到达时,展示“疑似短信广播未投递”
|
||||
- [x] 6.4 在 UI 中列出 `onReceive` 不触发的排查清单
|
||||
- [x] 6.5 增加 logcat 输出,区分权限缺失、body 为空、parser 失败、广播未到达
|
||||
|
||||
@@ -62,15 +62,15 @@
|
||||
- [ ] 8.1 为 `KeepAliveStateStore` 增加状态读写测试
|
||||
- [ ] 8.2 为 Boot action 处理逻辑增加单元测试
|
||||
- [ ] 8.3 为设置 intent fallback 增加测试或可验证日志
|
||||
- [x] 8.4 保持现有验证码解析测试通过
|
||||
- [x] 8.4 保持现有短信接收与结果展示测试通过
|
||||
- [x] 8.5 不要求本轮编译;代码完成后再按用户要求通知
|
||||
|
||||
## 9. Xiaomi 12S / HyperOS 3 Device Validation
|
||||
|
||||
- [ ] 9.1 手动开启小米自启动
|
||||
- [ ] 9.2 手动设置省电策略为无限制
|
||||
- [ ] 9.3 开启常驻通知,后台 30 分钟后发送验证码短信
|
||||
- [ ] 9.4 锁屏 30 分钟后发送验证码短信
|
||||
- [ ] 9.3 开启常驻通知,后台 30 分钟后发送测试短信
|
||||
- [ ] 9.4 锁屏 30 分钟后发送测试短信
|
||||
- [ ] 9.5 重启手机,确认保活服务是否自动恢复
|
||||
- [ ] 9.6 重启后未打开 app 直接发送第一条短信,记录广播是否到达
|
||||
- [ ] 9.7 手动 force-stop 后发送短信,确认不承诺接收,并记录诊断表现
|
||||
|
||||
Reference in New Issue
Block a user