Android 10 中的三态位置信息权限让用户可以更好地控制应用访问其设备位置信息的方式。
在 Android 9 及更低版本中,用户在授予应用位置信息访问权限时会做出永久选择。他们可以选择拒绝或允许,后者表示始终允许应用访问位置信息(前台和后台)。Android 10 中的三态位置信息权限为用户提供了三个选项来允许应用访问设备的位置信息。当应用请求权限时,系统会提示用户授予或拒绝权限级别。
用户通常会看到图 1 中所示的三个选项。但是,在某些用例中,可能只需要其中两个选项,在这种情况下,只会显示这两个选项。

图 1. 三态通知屏幕。
以下是三个选项:
- 始终允许:即使应用不在使用中(在后台运行),应用也知道设备的位置信息。这等同于在 Android 9 及更低版本中允许权限。
- 仅在使用该应用时允许:(仅限前台)仅当应用处于活动运行状态时,应用才能看到设备的位置信息。
- 拒绝:应用永远看不到设备的位置信息。这与在 Android 9 及更低版本中拒绝权限相同。
当应用请求位置信息访问权限时,系统会提示用户授予权限。
用户授予仅在使用该应用时允许访问权限后,应用可以请求逐步提升访问权限至始终允许。用户会看到一个请求对话框(如图 2 增量权限屏幕所示)。如果用户选择保持仅在使用时访问权限,则当应用在下次使用时访问设备位置信息时,对话框会提供保持并不再询问选项。
针对以 Android 10 为目标平台的应用,在以下情况下会显示此对话框:
- 授予权限至少 24 小时后。
- 仅当应用在后台接收位置信息时。
- 当屏幕处于开启状态,且用户未使用其他应用时。

图 2. 增量式权限。
要详细了解如何请求权限,请参阅应用访问设备位置信息。如需了解您的应用以 Android 9 及更低版本为目标平台的相关详情,请参阅用户发起的动作的延续。
影响
三态位置信息权限功能会影响任何需要在后台运行时访问设备位置信息的应用,并且是 Android 10 中的必需功能。
您可以更改您的代码,但不得更改或自定义框架中与权限相关的行为。
实现
三态位置信息权限适用于 Android 10 中的应用,无论应用的目标 SDK 是什么。
如需了解如何(在升级时)实现应用的使用场景,请参阅开发者文档中的针对设备升级场景进行设计部分。
要了解如何为不同的使用场景启用访问权限(例如,为 Google 地图或 Google Play 服务等应用请求后台位置信息访问权限),请查看应用访问设备位置信息页面上的这些主题
应用内位置信息访问权限
用户可以选择将您应用的访问权限更改为拒绝或仅在使用该应用时允许。对于应用内位置信息访问权限,以及对于所有第一方和第三方应用,请提供下表给出的用户控制级别。
应用需要请求的权限类型 | 用户可提供的选项 |
---|---|
应用仅请求前台权限 | 仅在使用该应用时允许 拒绝 |
应用请求始终允许权限(前台和后台) | 始终允许 仅在使用该应用时允许 拒绝 |
所有具有位置信息访问权限请求的应用 | 仅在使用该应用时允许 |
这些权限适用于所有位置信息请求。具有仅在使用该应用时允许权限的应用不允许进行后台 Wi-Fi 或移动网络扫描。
在 Android 11 或更低版本中,具有仅在使用该应用时允许权限的应用不允许进行后台蓝牙扫描。从 Android 12 开始,具有仅在使用该应用时允许权限的应用可以通过将 android:usesPermissionFlags
属性的值设置为 neverForLocation
来获得蓝牙扫描结果。如需了解更多详情,请参阅应用不获取物理位置信息。
操作系统升级
在操作系统升级到 Android 10 时,应用位置信息权限会按如下方式转换
- 开启变为仅在使用时允许。
- 关闭保持关闭(拒绝)。
- 预先授予的位置信息访问权限变为仅在使用时允许预先授予。