紧急预警!Android 17 定位权限大改,你的 App 要适配了

本文首发于微信公众号"Android技术圈"

做过定位相关功能的开发者都知道,定位权限是用户最敏感的权限之一。

弹窗一出来,用户的第一反应往往是"拒绝"。就算选了"仅在使用时允许",心里也不踏实------我关了应用它还在定位我吗?

Android 17 给出了一个新思路:不弹窗了,改成按钮。

系统定位按钮:点一下,用一次

Android 17 引入了一个全新的 UI 组件------系统定位按钮(Location Button)。

它的逻辑很简单:开发者把这个按钮嵌入到应用界面里,用户需要定位的时候点一下,应用就能获得一次精确位置。不需要弹权限对话框,不需要提前授权。

对开发者来说,好消息是这个按钮通过 Jetpack 库提供,不需要自己从头实现。而且它自带向下兼容------在 Android 16 及以下的设备上,会自动降级为标准的定位权限弹窗。

按钮长什么样

定位按钮有一定的自定义空间:

  • • 颜色、轮廓样式、大小、形状都可以调整,适配应用的 UI 风格

  • • 定位图标是固定的,不能替换------这是系统安全的一部分,防止应用伪造按钮欺骗用户

  • • 文字标签有预设选项可选

也就是说,你可以让按钮融入你的界面设计,但用户一眼就能认出这是一个"系统级"的定位按钮,而不是应用自己画的。

使用时需要声明 USE_LOCATION_BUTTON 权限。

模糊定位也升级了

除了定位按钮,Android 17 还改进了**模糊定位(Coarse Location)**的算法。

之前的模糊定位用的是固定的 2km 网格------不管你在市中心还是荒郊野外,返回的都是一个 2km x 2km 范围内的模糊位置。

问题在哪?在人口稀疏的地方,2km 范围内可能只有几户人家,模糊定位约等于精确定位。这就是隐私保护的漏洞。

Android 17 引入了基于人口密度的动态网格算法:

  • • 人口密集区域(城市):网格较小,因为 2km 范围内已经有足够多的人

  • • 人口稀疏区域(郊区、乡村):自动增大网格范围,确保模糊位置覆盖足够多的用户

这个改动对开发者来说是透明的,不需要改代码。但如果你的应用依赖模糊定位的精度来做某些逻辑判断,需要注意在偏远地区返回的范围可能比以前更大。

谁在用我的位置?系统告诉你

Android 17 还加强了定位访问透明度。

当非系统应用正在访问定位时,状态栏会显示一个持续的定位指示器。用户点击这个指示器,可以看到最近哪些应用访问了位置数据,并且直接管理权限。

这个"最近应用使用"对话框的设计很直接------不需要跳转到设置页面,在当前界面就能看到信息、关闭权限。

对开发者意味着什么?你的应用在后台偷偷获取位置的行为,用户一眼就能看到。 如果你的应用频繁获取位置但用户感知不到价值,很可能会被直接关掉权限。

权限对话框也变了

最后一个变化是定位权限的运行时对话框本身。

Android 17 重新设计了"精确定位"和"模糊定位"两个选项的视觉呈现,让两者的区分更加明显。

之前的设计中,两个选项看起来太像了,很多用户不知道自己选的是哪个。新设计用更清晰的视觉分隔,引导用户做出更有意识的选择。

写在最后

从 Android 6.0 引入运行时权限,到 Android 10 的后台定位限制,再到 Android 12 的模糊定位选项,Google 一直在收紧定位权限。

Android 17 的定位按钮是这条路上的又一步------从"能不能用"变成了"用的时候才给"。

对用户来说,这是好事。对开发者来说,与其抱怨权限越来越难拿,不如拥抱这个趋势:用定位按钮替代权限弹窗,让用户主动给你定位,而不是被动同意。

你的应用打算怎么接入定位按钮?评论区聊聊。

相关推荐
booboosui10 小时前
Android 悬浮窗藏不住自己:一个标志位与 140 毫秒
android
传奇开心果10 小时前
【Flutter踩坑排雷】第5课:扩展方法冲突坑|同名扩展引发编译歧义,故障规避手段
android·flutter
.痞老板.13 小时前
mysql初阶--数据类型
android·数据库·mysql
StarsGreen13 小时前
Android 启动流程详解
android·linux·单片机·嵌入式硬件
booboosui1 天前
Android 上来电怎么判:7 个条件加 5 个中文词
android
MardaWang1 天前
App 内嵌 H5 的信任边界设计(ArkWeb/HarmonyOS 实战)
android
石头慢慢说1 天前
不写 XPath,让 AI 在真机上跑测试:Appium MCP 全流程实战
android
90后的晨仔1 天前
解决 Android 构建报错:Unable to delete file .../file-map.txt
android·前端
mg6681 天前
安卓玩机工具----安卓手机变成桌面电脑!多窗口镜像+音频投射+游戏操控,无需 Root
android·智能手机·电脑
peakmain91 天前
异常处理 - Native 层的崩溃捕获机制及实现 (一)
android·性能优化