KappS 知识库 · 博客

2026年Google Play通讯录权限教程

博客 教程

2026年4月15日,Google Play公布了新的通讯录权限(Contacts Permissions)政策。政策截止日期表把它列在访问敏感信息的权限和API一行,截止日期是2027-01-27。已公布的句子很短:不需要广泛访问的应用必须使用Android Contact Picker。如果面向 Android 17(API 37)及更高版本的构建仍携带 READ_CONTACTS,Play要求你在控制台申报「为什么选择器不够用」——或者在执法前去掉该权限。KappS 这篇是控制台与政策操作说明,不能代替线上帮助页。

今天要解决的问题:判断产品是否真的需要整本通讯录。如果不需要,就迁移到 Contact Picker,去掉 READ_CONTACTS,并处理 Play 控制台提示。如果选择器无法支撑核心功能,就在2027-01-27前准备通讯录申报——哪些面向用户的功能需要广泛访问,以及选择器为何不够。请核对当前 Play 控制台帮助里的表单标签和后续说明——本文只复述这些帮助页已经公布的内容。


Play已经公布的内容(截止日期、适用范围、公告)

三份官方页面用不同篇幅说同一件事:

  • 政策截止日期里日期为2027-01-27的一行:「我们正在推出通讯录权限政策,以规范对用户通讯录的广泛访问。不需要广泛访问的应用必须使用 Android Contact Picker……公布于2026-04-15。」
  • 2026年4月15日政策公告使用同样措辞,并指回政策截止日期页。Play写明自该日起你至少有30天开始更新——表上的执法日期仍是2027年1月27日。
  • 访问敏感信息的权限和API重复了这项新政策,并标明自2027年1月27日起生效。更新后文章预览补上了 Android 17 规则:面向 Android 17 及更高版本(API 37+)的应用,只有在 Contact Picker 不足以提供核心功能时才可申请 READ_CONTACTS,并须提交 Play 控制台申报。

了解具有最小范围替代方案的受限权限公布了可执行时间表:

  1. 2026年4月15日——政策公布。
  2. 2026年9月——仍携带 READ_CONTACTS 的应用会在 Play 控制台收到提示:提交申报以证明核心功能需要广泛访问,或去掉权限并改用 Contact Picker。帮助给出的行动项:先和团队确认该权限是否为核心功能所需;若是,要能从技术上说明为什么最小范围选择器不够。
  3. 2027年1月27日——面向 Android 17 及更高版本(API 37+)的应用必须合规。控制台将提供30天自动自行延期。该日期之后,范围内未合规应用将面临执法。

所有用户通讯录都属于用户数据政策下的个人敏感数据。预览政策还写明:除非得到数据主体(通讯录里的联系人本人,而不仅是设备所有者)授权,否则不得披露或公开非公开通讯录数据。


第一步:判断你是否真的需要 READ_CONTACTS

不要先打开控制台,先看产品。帮助里的判断标准是:Android Contact Picker 是否足以支撑核心功能。如果用户选出一两个联系人、把姓名/电话/邮箱交给你就够用,那是选择器的工作——不是整本通讯录权限。

帮助列举的、通常不得申请 READ_CONTACTS 的用途:

  • 与某人分享文件
  • 协作
  • 邀请或推荐他人加入某项服务
  • 选择一个联系人完成交易

帮助列举的、该权限仍常见的用途(仍须说明理由):

  • 通讯录管理应用(展示、编辑或整理全部联系人)
  • 必须与通讯录交互的无障碍功能
  • 服务端好友匹配 /「我的哪些联系人已经在用这个平台」
  • 备份通讯录,或把用户数据备份/恢复到另一台设备
  • 自动更正 / 自动完成(需要全部联系人姓名的键盘)
  • 拨号或短信界面、通话记录、来电拦截、覆盖全部联系人的 CRM 备注、需要通讯录数据库的个人助理指令

决定保留权限之前,有两条已公布的限制:

  1. 自制通讯录选择界面不能作为保留权限的理由。帮助的常见问题写明:自定义选择器「不能作为保留通讯录访问的理由」。
  2. 私有和企业设备管理应用不受此项要求约束。这条豁免写给那类应用——不是给消费级「邀请好友」按钮的。

核对真实二进制,不要只看商店文案:

  1. 功能需要每一个联系人,还是用户选出的子集?
  2. 访问是持续的(同步、备份、匹配、来电拦截),还是一次性的(分享、邀请、选接收人)?
  3. 用户拒绝 READ_CONTACTS 后,同一功能能否改走选择器或手动输入?受限权限政策已经要求:对拒绝授权的用户,须做出合理努力以提供替代路径。
  4. 该功能是否出现在 Play 商店列表里?敏感权限政策写明:只能为当前、已在列表中宣传的功能申请访问——不能为未实现或未披露的功能申请。

如果诚实的答案是「我们只要用户亲手选出的那几个联系人」,到此停住并迁移。为了省事而保留 READ_CONTACTS,过不了申报里的第二问。


第二步:迁移到 Android Contact Picker

Play 的受限权限帮助和 Android Contact Picker 文档描述的是同一套系统界面:用户浏览联系人,应用只申请所需字段(电话、邮箱、地址),你获得的是所选数据的读取权限——不是整本通讯录。

已公布的接入事实(不要自行发明额外 API):

  1. Play 帮助写明用 Intent.ACTION_PICK_CONTACTS 拉起选择器。Android 功能页把同一动作写作 ContactsPickerSessionContract.ACTION_PICK_CONTACTS。
  2. 与旧的 ACTION_PICK 不同,新选择器允许一次请求多个数据字段(Play 帮助)。Android 文档把这写成 EXTRA_REQUESTED_DATA_FIELDS / EXTRA_PICK_CONTACTS_REQUESTED_DATA_FIELDS 等 extras,MIME 类型来自 ContactsContract.CommonDataKinds(电话、邮箱、结构化地址)。
  3. 选择器没有向旧版本回溯,只存在于 Android 17(API 37)及更高版本。应用target Android 17+ 时,系统会自动把现有的 Intent.ACTION_PICK 升级为新界面。帮助仍建议改用 ACTION_PICK_CONTACTS,以便使用多字段选择、工作资料切换及其他新 extras。
  4. 即使应用仍 target 较低 SDK,只要在 Android 17 设备上给 ACTION_PICK 加上布尔 extras EXTRA_USE_SYSTEM_CONTACTS_PICKER,也可以测试新界面(Android 文档)。
  5. 成功时系统返回 RESULT_OK 和一个会话 URI(Session URI),读取权限是临时的。Android 的最佳实践:如果进程结束后还要用这些数据,须立即持久化。不要把会话 URI 当成通讯录的长期句柄。
  6. 只申请真正需要的字段。如果只发短信,就申请电话 MIME 类型,选择器可以隐藏没有号码的联系人。

然后在 Android 17+ 的清单(以及残留的库合并结果)里去掉 READ_CONTACTS。邀请/分享/选接收人这类流程既上选择器又留权限,正好与帮助要求相反。

如果已经在用 ACTION_PICK,target 17+ 就能看到新界面,不必立刻重写。需要会话 URI、个人/工作资料切换或多字段 extras 时,再改到 ACTION_PICK_CONTACTS。这是已公布的兼容路径,不是 KappS 发明的捷径。


第三步:更新 Play 控制台申报

两篇帮助描述了控制台操作。以你账号里实际出现的标签为准;如果控制台没有单独的「通讯录」开关,不要自己发明第二个。

通讯录专项提示(受限权限帮助)。2026年9月,仍携带 READ_CONTACTS 的应用会在 Play 控制台收到提示:提交申报,或去掉权限并改用 Contact Picker。帮助写明该申报会问:

  1. 哪些面向用户的功能需要 READ_CONTACTS?从已公布的用例列表中选择(通讯录管理、拨号或发送短信、通话记录、CRM、来电拦截、无障碍、个人助理、好友匹配/搜索、备份与恢复、自动更正/自动完成、用户主动选择设备联系人,或其他)。若用例不面向用户或不在列表中,帮助写明选「其他(Other)」。
  2. 说明为什么 Contact Picker 不够,以及为何仍需通过 READ_CONTACTS 获得广泛访问。

勾选「用户主动选择设备联系人」(邀请、分享、在游戏里拉黑某个人)是帮助举的「选择器形态」例子。这一行不是保留权限的漏洞。

权限申报表(申报应用权限帮助)。权限请求在你添加 Android App Bundle 之后、发布流程中评估。若该软件包申请了高风险或敏感权限,且 Play 尚未收到申报,控制台会显示权限申报表(Permissions Declaration Form)。官方要点如下,不额外编按钮:

  1. 若仍有有效软件包(包括开放、封闭或内部测试)需要申报,左侧菜单的应用内容(App content)下会出现提醒。在你创建包含申报的版本、或去掉相关权限之前,不能发布应用变更——包括商店列表、定价和分发。
  2. 在应用内容页,表单的可展开列表会显示此前已申报的权限(对勾)和新申请的权限(提醒)。如果「新申请」列表里出现你不打算申报的权限,帮助要求先移除该软件包,再上传权限集合正确的新包,然后继续。
  3. 从支持的用例中指定核心功能;如有需要,提供审核说明、视频演示(优先 YouTube 链接),以及——若功能仅限登录用户——非生产环境的测试账号。勾选确认项后,再完成准备并发布该版本。
  4. 提交表单并发布后,Play 会进行加长审核,「可能需要数周」。被拒结果会发到账号所有者和联系邮箱。若必须紧急上线,帮助给出的路径是:去掉敏感权限并发布新版本,只走标准政策审核。

若控制台只出现受限权限文章里描述的通讯录提示,回答那两个问题即可。若在应用内容页出现完整的权限申报表,就按该表单和「申报应用权限」帮助操作。本文不编造第三块屏幕。

使用 Publishing API 的开发者:帮助写明,若版本申请了尚未申报的高风险或敏感权限,接口会报错。先在 Play 控制台网页完成一次表单;获批后可再使用 API。之后每新增一种权限,都必须在网页界面提交修订后的表单。


第四步:什么会审不过或被执法

Play 公布了后果。不要用坊间说法替换:

  • 选择器本来就够用。邀请、分享、协作或「选一个接收人」,却仍持有 READ_CONTACTS,正是帮助称为通常不得申请的例子。应用内自制选择器救不了这份申报。
  • Android 17+ 的 READ_CONTACTS 构建没有申报。2027年1月27日之后,范围内未合规应用将面临执法。帮助也公布了控制台里的30天自动自行延期——延期不是永久豁免。
  • 忽略应用内容提醒。申报权限帮助写明:在处理有效的权限申报提醒之前,不能发布列表或版本变更,包括仍携带该权限的闲置测试轨道。停用不合规且未在使用的开放/封闭/内部测试轨道。
  • 敏感数据用途偏离。通讯录属于用户数据。受限权限要求尊重拒绝、不得强迫用户同意非关键权限,并保留合理替代。敏感权限政策禁止出售这些数据,也禁止用于未披露的功能。
  • 未经联系人本人授权即公开非公开通讯录。预览政策把这条单独写出,与选择器迁移并列。

若你读完本文后,控制台又出现新的通讯录问卷,以该表单链出的现行帮助为准。本文不编造额外按钮、额外 API 级别,也不在已公布的2026-04-15(公布)、2026年9月(控制台提示)和2027-01-27(政策截止日期 / Android 17+ 强制)之外再发明日期。


10分钟自检清单

  1. 列出所有读取通讯录的功能。把每一项标成选择器形态(邀请、分享、选接收人)或广泛访问(管理全部联系人、备份、好友匹配、来电拦截、无障碍、键盘)。
  2. 若全部是选择器形态,接入 ACTION_PICK_CONTACTS,立刻持久化 Session URI 结果,并从 Android 17+ 清单中去掉 READ_CONTACTS。
  3. 若某功能确实需要整本通讯录,先写清选择器做不到的技术原因,再打开控制台。
  4. 打开 Play 控制台。若 9 月提示或应用内容提醒还在,完成已公布的申报,或上传不再申请该权限的软件包。
  5. 停用仍申请 READ_CONTACTS 却没有申报的闲置测试轨道。
  6. 确认商店列表只宣传与你仍在申请的访问范围相符的功能。
  7. 在依赖 30 天自行延期之前,重新阅读当前的政策截止日期和受限权限帮助。

一句话

只要应用面向 Android 17+ 且不需要整本通讯录,Play 的通讯录权限政策——2026年4月15日公布,截止日期2027-01-27——就要求用Android Contact Picker替代 READ_CONTACTS;只有当你能申报已公布的核心用例、并说明选择器为何不够时,才可保留广泛访问。


正在规模化运营开发者账号?运维这一块交给我们。

点击选择文件 · 右键「粘贴」或按 Ctrl/⌘+V 直接粘贴截图

也可以直接拖拽文件到此处。

我们会回复你填写的邮箱,信息仅用于本次咨询。

✔ 已提交

我们已收到你的信息,会在 24 小时内回复。


← 返回修改