1. 受限权限(Restricted permissions)是 Play 对危险(Dangerous)、特殊(Special)、签名(Signature)权限,以及《访问敏感信息的权限和 API》里单独写明的权限族施加的额外门槛。经这些权限拿到的用户或设备数据属于个人数据和敏感用户数据:只申请当前、且已在商店页宣传的功能所必需的权限,按场景逐步申请,尊重用户拒绝,且不得出售数据或用于未披露用途。权限声明表单(Permissions Declaration Form)是 Play 管理中心用来收集这项正当理由并完成批准的入口,高风险权限必须先过这关才能留在已发布产物里。主要政策:Play 管理中心帮助《访问敏感信息的权限和 API》(https://support.google.com/googleplay/android-developer/answer/16558241?hl=zh-Hans)。表单流程:《为应用声明权限》(https://support.google.com/googleplay/android-developer/answer/9214102?hl=zh-Hans)。
2. 触发表单的是二进制,不是你有没有想起勾选。添加 Android App Bundle 之后,Play 会在「准备并发布版本」流程里评估所申请的权限(https://support.google.com/googleplay/android-developer/answer/9859348?hl=zh-Hans)。若该包申请了高风险或敏感权限——帮助里的例子是短信或通话记录——且尚未提交声明,权限声明表单就会出现在这次发布流程中。政策 → App 内容 → 权限和 API(或清单合并结果里已有该权限时 Play 展示的高风险 / 敏感权限声明)是同一张表的常驻入口,点「开始」或「管理」。正式版、开放测试、封闭测试或内部测试上,只要仍有未声明的高风险权限,App 内容页就会出现提醒,并可能挡住发布——包括商店详情修改——直到你完成声明或去掉该权限。若 Play 尚未批准该高风险用途,用 Publishing API 发布会报错;帮助写明:先在 Play 管理中心网页完成表单,再在网页里走完发布。应用每新申请一项受限权限,都必须再提交一份针对该项权限的修订表单。
3. 把这当成覆盖多个权限族的一张表单流程,而不是 QUERY_ALL_PACKAGES 或无障碍专题 FAQ 的替代。常会打开这张表的权限族包括:短信与通话记录组(READ_SMS、SEND_SMS、RECEIVE_SMS、READ_CALL_LOG 等;须已是默认短信、电话或助理处理程序——https://support.google.com/googleplay/android-developer/answer/10208820?hl=zh-Hans);AccessibilityService(填写无障碍声明;只有真正的残障辅助工具才可设 isAccessibilityTool=true);QUERY_ALL_PACKAGES(与其他高风险权限一并声明;若定向 <queries> 就够,就不要申请广泛可见性);目标为 API 33+ 且 Android 照片选择器无法支撑核心功能时的照片/视频权限 READ_MEDIA_IMAGES / READ_MEDIA_VIDEO(https://support.google.com/googleplay/android-developer/answer/14115180?hl=zh-Hans 与 https://support.google.com/googleplay/android-developer/answer/15800983?hl=zh-Hans);所有文件访问(MANAGE_EXTERNAL_STORAGE);REQUEST_INSTALL_PACKAGES;以及 Health Connect / 细粒度健康权限。务必审计合并后的清单,包括 SDK 偷偷加入的权限。若最小范围替代方案已能覆盖功能——照片选择器、SMS Retriever API、定向 <queries>、存储访问框架或 MediaStore——应去掉受限权限,而不是去申报。
4. 管理中心路径与帮助写明的七步:打开应用 → 政策 → App 内容 → 权限和 API → 开始(或管理)。或在上传后由发布向导弹出时当场填完。第 1 步:核对 Play 在产物上检测到的权限——审核员认的是这份列表,不是旧草稿。第 2 步:从受支持的用例列表中指定核心功能,只勾真正适用的项。第 3 步:写清审核说明,让陌生人能走到需要该权限的页面。第 4 步:提供一段短视频,演示该核心功能(以及政策要求的应用内披露)。第 5 步:若功能需登录,提供可用的应用访问凭据和导航。第 6 步(仅多 APK):为已无法改代码的旧 APK 申请例外——帮助把该字段写给短信/通话记录残留;按版本号列出。第 7 步:确认声明准确,并同意相应权限的正当使用条款。然后继续完成版本准备。同一步骤见:https://support.google.com/googleplay/android-developer/answer/9214102?hl=zh-Hans。
5. 申报必须准确。Play 把核心功能定义为应用的主要用途:没有这项需要该权限的功能,产品就会「损坏」或无法使用;该用途及其核心特性必须在商店说明里醒目载明。表单、商店页和代码必须说同一件事。不要因为邻近用例更好过审就勾它。不要在清单里留占位权限文案。若你改变了某项受限权限的用法,必须按最新信息重新提交表单。受限权限数据只能用于已声明的核心功能——不能用于广告、营销或改进无关应用。用户拒绝非关键权限时必须尊重该选择,并提供合理替代(例如改为手动输入,而不是去读通话记录)。
6. 常见拒审与通常修复:(a)SDK 悄悄加入短信、通话记录、QUERY_ALL_PACKAGES、READ_MEDIA_IMAGES 或 MANAGE_EXTERNAL_STORAGE——卸掉或替换该 SDK,或用 tools:node="remove" 剥掉权限,再上传新包;(b)表单缺失、过期,或描述的用途与代码不符——更新政策 → App 内容后重提;(c)商店页写的是单一用途工具,二进制却申请默认处理程序或广泛访问权限——要么改列表,要么不该要这个权限;(d)照片/视频或软件包可见性本可用照片选择器或 <queries> 解决却仍去申报——去掉该权限;(e)视频或审核说明缺失、过期,或演示的不是所声明功能;(f)核心功能需登录但应用访问为空;(g)测试轨道上仍有带该权限的旧 APK;(h)网页表单尚未获批就用 Publishing API 发布;(i)用法已变却未重新提交表单。未通过政策核验或缺少权限声明表单的应用可能被 Google Play 下架。欺骗性使用或未声明使用,可能导致应用被暂停或开发者账号被终止。
7. 预留额外审核时间。帮助把声明审核写进版本审核;高风险权限可能让新产物一直处于待发布,直到用例获批。不要试图再传一个版本盖住待发布项来跳过表单——帮助提醒:覆盖待发布版本可能进一步拖延。若急需发布与该权限无关的修复,先出一包不再申请未声明权限的产物。每个活跃轨道都要诚实:Play 读的是内部、封闭、开放和正式版上合并后的清单,不是你以为审核员只会看到的那个包。
8. 提交前清单:(a)在每个轨道导出合并清单,列出全部受限权限,包括 SDK 加入的;(b)能用最小范围替代方案的权限一律去掉;(c)在政策 → App 内容 → 权限和 API 填完与商店页、代码一致的用例;(d)附上能真正走到该功能的当前视频以及审核 / 应用访问说明;(e)用例有变就重新提交表单;(f)网页表单获批前,不要用 Publishing API 发布新的高风险权限;(g)清单、SDK 或默认处理程序角色有变后,重读 https://support.google.com/googleplay/android-developer/answer/16558241?hl=zh-Hans、https://support.google.com/googleplay/android-developer/answer/9214102?hl=zh-Hans、https://support.google.com/googleplay/android-developer/answer/10208820?hl=zh-Hans 和 https://support.google.com/googleplay/android-developer/answer/14115180?hl=zh-Hans。