隐私与数据边界

Android AI 任务中权限撤销:停止、清理与安全恢复

聚焦活动任务期间权限被撤销后的停止与恢复,不重复讲权限清单或请求时机。

审核状态: 内容已校验;中文稿供用户审核 · 2026-10-05 · Fact IDs: ANDROID-PRIVACY-01, COVE-LIFECYCLE-01

直接回答

活动本地 AI 任务期间权限被撤销,是一次生命周期转换,而不只是权限对话框返回失败。相机、麦克风或用户选择的文件,可能在采集、预处理、推理、持久化或导出中变得不可访问。Android 权限指南要求应用确认功能所需访问权限,并在用户拒绝或撤销时优雅降级;官方还说明某些一次性权限被撤销时,应用进程可能终止。因此,应用既要处理进程仍存活时观察到的访问丢失,也要处理下次启动时只能恢复持久化状态的情形。不能假设内存任务标记或原生句柄会存活。 按阶段明确资源所有权。采集组件拥有相机或录音器资源;预处理可能拥有图片/音频副本;推理任务可能持有衍生张量;数据库组件可能有事务。权限被撤销后,停止访问受保护源,按产品契约取消或分类任务,关闭应用自有资源,并且只保留用户此前已确认提交的内容。不能继续静默采集,也不能为修复模型而删除无关用户历史。如果原始字节在撤权前已经复制到应用内存,对这些副本的保留策略也必须明确;撤销权限不会自动决定所有数据保留问题。 相机、麦克风和导入文件要分别测试。对每种资源,在获取、预处理、推理调用、结果保存和导出阶段注入撤销。包含一次性授权、设置页撤销、任务开始前拒绝,以及撤权后进程重建。记录操作前权限状态、首次失败边界、任务/请求 ID、已完成分段或页面、取消确认、清理结果和 UI 状态。不能声称每次权限变化回调都会在进程结束前送达;恢复受保护操作时必须重新查询当前权限。 重新启动后,只能重建在权限缺失时仍然有效的持久状态。将被中断的任务标为未完成,区分已确认输出与部分结果,并在再次访问源资源前重新检查权限。如果任务可从应用自有副本恢复,要说明边界并测试删除/保留行为;如果必须回到原文件或相机,应说明用户还要采取什么操作。不能把旧权限状态保存下来并当作永久授权。 有效的发布证据是一组逐阶段测试,而不是“任何任务都能自动恢复”的承诺。项目事实卡描述 Android 访问边界和当前 Cove 生命周期状态,但不能证明每个界面都处理了运行中撤权。使用合成或已获许可夹具;诊断仅保存错误阶段与请求标识,不保存照片、音频或文档内容。结论须限定到实际测试的应用构建、系统版本、权限类别、任务阶段和恢复路径。 界面文案要区分“应用无法再访问原始来源”和“之前已提交的结果仍保留”。例如,已经完成并保存的转写可继续显示,但当前录音段不应伪装为完整。用户重新授权后,应用应创建一个新操作状态;旧会话的迟到回调不能继续写入。若系统因撤权终止进程,则下次启动只能依据持久化状态恢复,不能自动打开麦克风或相机。 测试还应覆盖外部文件 URI 的授权生命周期。用户授予的读取权限可能与进程或 URI grant 相关;撤销、源提供方不可用或权限失效时,应用需要把问题归类为来源访问失败,而不是模型加载错误。错误记录可保存 Provider 类型和失败阶段,但不应记录私有文件名或文档正文。每种修复操作都应由用户可理解的提示发起。

离线语音笔记中麦克风授权在录音时失效

用户通过一次性麦克风授权开始录制私密笔记。已有多个 PCM 段完成,而下一段仍在采集;系统权限变化终止进程或阻止后续访问。

决策

仅保留已确认完成的分段,将当前段标为未完成,释放自有资源;下次启动重新检查权限,再决定恢复或重启。

预期结果

用户知道哪些内容已保存、哪些需要重新授权;应用不复用旧录音器或原生句柄。

需要收集的证据

只有将以下证据与同一模型文件和测试运行关联起来,结论才可复核:

  • ANDROID-PRIVACY-01:Android 权限策略要求尊重拒绝/撤销并优雅降级。
  • COVE-LIFECYCLE-01:当前 Cove ModelManager 有显式生命周期状态;权限撤销时仍需单独验证任务资源清理。

隐私声明需要数据清单和流量证据;“本地模型”标签本身不是证明。

实施流程

  1. 绘制受保护资源与所有者. 列出相机/音频/文件访问、预处理副本、推理输入、数据库写入和导出等阶段,并为每项指定所有者和清理动作。
  2. 定义撤销时的状态转换. 说明拒绝、撤销、访问异常、取消和进程死亡各自如何处理。区分已完成输出与部分/不确定结果;不能静默继续采集。
  3. 在每个任务边界注入撤销. 分别测试相机、麦克风、导入文件流程中的获取、预处理、推理、持久化和导出。覆盖一次性授权、设置页撤销、启动前拒绝及重新启动。
  4. 验证清理与持久状态恢复. 断言应用停止访问被撤销资源,释放其拥有的相机/录音器/会话/缓冲,并且只恢复持久状态。重试受保护动作前重新查询权限。
  5. 检查用户说明与诊断. 让用户知道已完成什么、什么被中断、需要何种操作。日志只记阶段、权限类型、请求 ID 和清理结果,不含原始媒体或文件内容。

让每个阶段的状态都可观察。失败信息应指出阶段、模型、运行时和恢复动作,同时避免记录用户私密内容。

验收标准

  • 适用的每类权限都在采集、预处理、推理、保存和导出边界分别测试撤销。
  • 已完成结果与不完整工作可区分;权限转换后不会静默继续访问来源。
  • 进程死亡测试会重建持久状态,不保存原生句柄,也不把旧权限当作永久授权。
  • 恢复文案与诊断说明被测权限和任务阶段,且不泄露用户内容。

决策对照表

维度选择或证据解读方式
任务开始前拒绝权限阻止受保护动作并解释或提供替代方式尚无活动资源;测试拒绝流程和用户选择。
活动任务中撤权停止访问、分类部分工作并清理资源所有者需要阶段感知的取消,并保留已确认完成结果。
撤权后进程终止重建持久状态并重新检查权限内存状态已丢失;重试不能假设旧授权或句柄还有效。

需要避免的失败模式

  • 假设页面收到权限回调后进程一定继续运行。
  • 将已保存权限标志当作永久授权,或清除无关用户历史来恢复任务。

还要避免静默回退、版本未固定、缺少取消处理,以及把不同配置的结果混在一起下结论。失败运行也应与成功记录一并保存。

最小复现记录

层级记录内容
设备厂商、型号、芯片、内存档位、操作系统版本
软件应用版本和 Git 提交号
模型系列、变体、版本、格式、文件长度、摘要、量化方式
运行时名称、版本、请求后端及实际后端证据
工作负载样例版本、输入摘要、提示词摘要、输出策略
结果完成、失败、取消、回退及保护隐私的诊断信息

发布检查表

  • ☐ 主要搜索问题已回答,且没有未经支持的数字。
  • ☐ 所有模型文件和运行时版本均已固定。
  • ☐ 代表性任务和失败处理策略均有说明。
  • ☐ 生命周期、取消、清理和回退均已测试。
  • ☐ 用户内容与网络边界均有说明。
  • ☐ 结论只适用于被记录的配置。
  • ☐ 新增测试结果时链接到原始方法或证据。

来源与相关证据

中文部署与排错专题见。奇连 AI 端侧专题。

常见问题

活动 AI 任务一定会收到权限撤销回调吗?

不要依赖回调总能在进程终止前到达。恢复受保护工作时重新检查访问;并分别测试进程存活中的撤权和进程死亡后的重启,记录各自的失败边界与清理结果。

撤权后应用是否要删除所有部分结果?

不应自动全部删除。保留用户操作中已提交的内容,将不确定工作标为未完成;复制输入和衍生结果按明确保留策略处理,并告知用户哪些内容已保存。

保存的权限标志能授权下一次会话吗?

不能。持久化任务状态不是权限授权。重新打开相机、麦克风或受保护文件前,应查询系统当前权限,并把权限缺失显示为需要用户操作,而非静默自动重试。