# Android 17 权限、报时与闹钟验证 本次范围:局域网运行时权限、整点报时前台播放、闹钟权限与调度恢复。系统 UID 和平台签名保持原状。 ## 已执行检查 - 使用本机 JDK 21 执行 `:app:compileDebugJavaWithJavac --offline`,Kotlin/Java 编译通过。 - Manifest 权限、私有播放服务类型和三个恢复广播结构检查通过。 - `git diff --check` 通过。 - 默认 JDK 17 无法读取项目现有 framework.jar 的 Java 21 字节码;本次仅在验证命令中切换 JDK,未修改项目 JDK 配置。 ## 设备回归(待执行) 使用目标量产固件,分别覆盖 Android 12、13、14 和 17;系统 UID 若默认获权,需要额外使用可撤销权限的测试环境覆盖拒绝路径。 1. 新安装打开桌面:按需出现局域网(仅 17+)、通知(13+)、精确闹钟和全屏提醒设置引导。取消后不立即重复弹同一个引导。 2. 拒绝附近设备权限:远程协助不启动采集,界面提示授权;在应用设置授权后返回桌面,信令重新连接,局域网 API 和串流可用。 3. 拒绝通知权限后允许:回到应用确认设置引导可用;启用一分钟后的闹钟,锁屏确认通知和全屏页面可用。关闭全屏授权时,确认通知仍有声音、点击可打开闹钟。 4. 缺少精确闹钟权限时保存闹钟:数据库记录保留,后台不强行打开设置。授权后返回应用或等待授权广播,确认已启用任务重新安排。 5. 撤销精确闹钟权限后重新授权:确认任务恢复,不因 SecurityException 崩溃。重复闹钟正常计算下一次,一次闹钟正常禁用。 6. 启用整点报时,锁屏并让应用处于后台:下一整点应显示短时前台通知、通过闹钟音频流播报,完成后通知和服务退出。首次冷启动模型也应完成播报。 7. 设备重启、应用覆盖更新后:已启用闹钟和报时重新调度;关闭报时则不重新启用。 8. 播放失败或模型初始化失败:播放服务退出并释放播放器和唤醒锁;最长存活两分钟,不自动复活。 ## 限制 通知/通知渠道被用户关闭时不能强行显示提醒;系统免打扰和闹钟音量仍遵循系统设置。已有通知渠道保留用户设置。未执行真机验证前,编译通过不能视为后台播放已验收。