2026年4月15日,Google Play 公布了位置权限(Location Permissions)政策更新。政策截止日期表把它列在访问敏感信息的权限与 API一行,截止日期是2027-01-27——与通讯录那一行同一天。已公布的句子很短:Play 将把位置按钮作为精确定位的推荐最小范围,以符合用户数据与敏感权限要求。若应用面向 Android 17(API 37)或更高,却仍为「搜附近」、单次分享坐标、给照片打地点或填地址而申请 ACCESS_FINE_LOCATION,Play 现在期望这类流程走位置按钮。KappS 这篇是政策操作说明,不能代替线上帮助页。

今天要解决的问题:盘点二进制和合并进来的 SDK 里每一处精确定位;把用途分成交易式(一次性、由用户触发)或持续的核心功能(导航、实时追踪);把交易式流程迁到 Android 位置按钮;若精确定位只通过按钮取得,就加上已公布的 onlyForLocationButton 标记;并准备所有申请 ACCESS_FINE_LOCATION 的应用现在都要填的 Play 控制台申报。请核对当前 Play 控制台帮助里的表单标签——本文只复述这些帮助页和 Android 位置按钮指南已经公布的内容。


Play已经公布的内容(截止日期、帮助、Android 17)

官方页面用不同篇幅描述同一截止日期。先看表格,再看专题帮助:

Android Developers 的 Play 政策时间表把同一句位置权限更新列在 2027年1月27日。

前台访问发生在应用打开且对用户可见时;后台访问发生在应用不可见时。本教程只谈前台 / 位置按钮这条路径。后台位置仍走单独的后台位置审核。位置按钮不是后台 API。


第一步:盘点每一处精确定位

不要先打开控制台,先看二进制和每一条合并进来的库。帮助的判断标准是:功能是否真的需要精确位置;若需要,它是一次性的用户操作,还是持续的核心功能。

核对真实产物,不要只看商店文案:

  1. 在合并后的清单以及依赖库清单中搜索 ACCESS_FINE_LOCATIONACCESS_COARSE_LOCATIONACCESS_BACKGROUND_LOCATION,以及若已存在的 USE_LOCATION_BUTTON
  2. 在代码和 SDK 文档中搜索融合定位客户端、上次已知位置、地理编码、地图镜头移动和「附近」查询。给每一处调用标上触发它的面向用户功能。
  3. 问清楚:如果只有城市级的粗略位置,功能还能不能用。最小范围文章列出的粗略位置够用的例子包括:本地新闻与趋势、区域活动、区域天气、「五英里内的商品」、「朋友在你所在城市」、在较大半径内显示最近门店的门店查找、城市级优惠,以及按大致地区设置语言或货币。
  4. 用户拒绝精确定位后,功能能否改走粗略位置、手动输入地址,或让用户在地图上点一个针?受限权限政策已经要求:用户拒绝时,应尽量提供合理路径。
  5. 该功能是否出现在 Play 商店列表里?持续申请 ACCESS_FINE_LOCATION 必须对应用的主要目的或商店列表所宣传的主要产品功能必不可少。

若诚实的答案是「我们只在用户点一下时需要一个精确点」,就不要再把它当成长期运行时权限。那是位置按钮的工作。


第二步:区分交易式用途与持续的核心功能

对于面向 Android 17(API 37)或更高的应用,位置按钮是交易式(一次性)精确定位的必要最小范围。帮助列出的常见例子:

按钮只在单次会话内授予精确定位,应用会话结束后即失效。它只用于前台。它不能代替后台位置,也不能在用户离开该界面后继续当成长授权来用。

持续的前台精确定位在属于核心功能、且按钮或粗略位置做不到时,仍然允许。帮助在这一侧举的例子:

同一页的 FAQ 写得很直白:只有在应用具备持续的核心功能(例如逐步导航)、且一次性按钮或粗略位置无法满足时,才可以继续使用标准的 ACCESS_FINE_LOCATION。你必须在 Play 控制台申报里说明理由。

无论走按钮还是走长期权限,两条已公布的禁令都适用:

不要自己发明第三类。「我们想要更准的广告分群」不是持续的核心功能。「用户点一次分享位置」也不是导航。


第三步:把交易式流程迁到位置按钮

Play 帮助和 Android 位置按钮指南描述的是同一个控件。按 Android 页面公布的路径使用 Jetpack LocationButton。该库被标为实验性、可能变更——问题请提到 Android issue tracker,锁定依赖版本前请重读现行指南。

已公布的集成要点如下——不要自行发明额外 API 或控制台按钮:

  1. 若应用面向 Android 17(API 37)或更高,且包含需要会话式精确定位的功能,Play 政策要求使用位置按钮。
  2. 除标准位置权限外,还须声明系统远程渲染服务所需的 USE_LOCATION_BUTTON
  3. 若精确定位通过按钮取得,须在 ACCESS_FINE_LOCATION 上加上已公布的 onlyForLocationButton 标记。Play 帮助「最小范围」一文的示例写成布尔属性:
<uses-permission
    android:name="android.permission.ACCESS_FINE_LOCATION"
    android:onlyForLocationButton="true" />

Android 开发者指南把同一标记写成 usesPermissionFlags 的值,并同时声明 USE_LOCATION_BUTTON

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
    android:usesPermissionFlags="onlyForLocationButton" />
<uses-permission android:name="android.permission.USE_LOCATION_BUTTON" />

以上两段就是目前线上页面公布的写法。以你正在对照的帮助文章和 Android 指南为准——本文不另造第三个属性名。Android 的说明:加上该标记后,应用不能再走更宽的精确定位权限;用户必须通过按钮才能分享精确点。

功能只需粗略位置时,声明 ACCESS_COARSE_LOCATION;Jetpack 示例若仍把它和精确定位并列,也可以一并声明。不需要精确时,优先用粗略位置。

Jetpack 会处理旧设备:在 Android 16 及更低版本上,库会回退到本地渲染的控件,保留你的布局,并触发标准的位置权限提示。这就是已公布的兼容路径——不是你为 API 36 另编的第二套权限策略。

然后按 Android 的设计限制检查界面:可以自定义颜色、描边、形状,以及一组预定义文案(「Use precise location」「Share precise location」等已列出的类型)。位置图标是强制的、不可自定义;字号由系统管理,以符合无障碍设置。

如果供应商 SDK 仍为「搜附近」或签到点击申请长期的 ACCESS_FINE_LOCATION,这正是 Play 要迁到按钮上的交易式模式。替换该流程,或替换该 SDK。


第四步:准备 Play 控制台申报

最小范围帮助写明:所有申请精确定位(ACCESS_FINE_LOCATION)的应用,都必须在 Play 控制台完成申报,说明为何需要它,以及为何位置按钮或粗略位置不够。申报表计划在2026年11月出现。本文不编造菜单路径,只用 Play 公布的名称——以你账号里实际出现的标签,以及该表单链出的帮助为准。

帮助写明表单会问:

  1. 哪些面向用户的功能需要 ACCESS_FINE_LOCATION从已公布的列表中选择:搜索附近;一次性位置分享;实时追踪;由用户发起的位置标记;自动位置标记;个性化;导航;区域特定操作(地理围栏);附近设备(Android 11 及以下发现蓝牙/Wi-Fi 设备的旧情形);浏览器位置访问;网络诊断;或其他。若用途不面向用户或不在列表中,帮助要求选择「其他」。
  2. 说明为何 ACCESS_COARSE_LOCATION 或 LocationButton 不够,以及为何仍需要持续的 ACCESS_FINE_LOCATION

在仍持有长期精确定位的构建上选择「搜索附近」「一次性位置分享」或「由用户发起的位置标记」,正是帮助所说的按钮型用途。这些行不是 Android 17+ 上跳过按钮的漏洞。

若剩下的精确定位路径只有按钮,申报应与清单一致:已设置 onlyForLocationButton、已声明 USE_LOCATION_BUTTON,也没有仍拿走更宽精确定位权限的残留库。

若导航或实时追踪确实需要持续的精确定位,先写清楚按钮或粗略位置为何做不到,打开控制台。帮助给 11 月的行动项是:和团队确认 ACCESS_FINE_LOCATION 是否为核心功能所必需,并准备好从技术上解释最小范围路径为何不够。

2027年1月27日之后,范围内未合规的应用将面临执法。控制台公布了 30 天自行延期——延期不是永久例外。现有应用也不豁免:未满足 Android 17+ 位置按钮要求的更新可能被拒。


2027-01-27 之后什么会失败

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

若你读完本文后,控制台又出现新的位置问卷,以该表单链出的现行帮助为准。本文不编造额外按钮、额外 API 类名,也不在已公布的2026-04-15(公布)、2026年11月(申报开放)和2027-01-27(政策截止日期 / 强制合规;面向 Android 17+ 的执法预计在该月下旬)之外再发明日期。


10分钟自检清单

  1. 列出每一处读取设备位置的功能。分别标成:粗略位置即可、交易式精确定位(按钮)、或持续的核心功能(导航 / 实时追踪)。
  2. 若某功能粗略位置即可,为该路径去掉 ACCESS_FINE_LOCATION,只保留 ACCESS_COARSE_LOCATION
  3. 若剩下的精确定位全是交易式,且目标是 Android 17+,就实现 Jetpack LocationButton,声明 USE_LOCATION_BUTTON,并在 ACCESS_FINE_LOCATION 上加上已公布的 onlyForLocationButton 标记。
  4. 若某功能确实需要长期精确定位,先写清按钮和粗略位置为何做不到——再打开控制台。
  5. 2026年11月的申报出现在 Play 控制台后,按实际上架的二进制勾选对应用途并完成申报。
  6. 确认商店列表只宣传与你仍在申请的访问相符的功能。不要仅为广告或分析申请位置,也不要出售位置数据。
  7. 在依赖 30 天自行延期之前,重读当前的政策截止日期和最小范围位置按钮文章。

一句话

若应用面向 Android 17+,且精确定位只用于用户的一次点击,则 Play 于 2026年4月15日公布、截止日期为2027-01-27的位置权限更新,要求使用Android 位置按钮(并加上已公布的 onlyForLocationButton 标记),而不是长期持有 ACCESS_FINE_LOCATION;只有在能申报导航或实时追踪这类核心用途、并说明按钮或粗略位置不够时,才可保留持续的精确定位。


参考来源