位置访问类型

位置访问类型

为了保护用户隐私,使用位置服务的应用必须请求位置权限。

有多个权限与位置相关。您请求哪些权限以及如何请求,取决于应用用例的位置需求。

本页介绍了不同类型的位置需求,并说明了在各种情况下如何请求位置权限。

如需请求位置权限,请遵循所有运行时权限的最佳实践。

位置访问类型

每项权限都包含以下特征的组合

类别:前台位置或后台位置。

准确度:精确位置或大致位置。

前台位置

如果您的应用包含仅共享或接收一次位置信息,或者在特定时间内共享或接收位置信息的功能,那么该功能就需要前台位置访问权限。以下是一些示例

在导航应用中,某项功能允许用户获取详细路线导航。

在消息应用中,某项功能允许用户与其他用户共享当前位置。

如果在以下任一情况下,应用的某项功能访问设备的当前位置,系统便会认为您的应用正在使用前台位置

属于应用的一个 Activity 可见。

您的应用正在运行前台服务。当前台服务运行时,系统会显示永久性通知以提醒用户。当应用进入后台(例如用户按下设备上的主屏幕按钮或关闭设备显示屏)时,应用仍会保留访问权限。

此外,您应该声明 location 的前台服务类型,如下面的代码段所示。在 Android 10(API 级别 29)及更高版本中,您必须声明此前台服务类型。

android:name="MyNavigationService"

android:foregroundServiceType="location" ... >

当您的应用请求 ACCESS_COARSE_LOCATION 权限或 ACCESS_FINE_LOCATION 权限时,即表示声明需要前台位置权限,如以下代码段所示

注意:从 Android 12 开始,您的应用可以调用 getLocationPowerSaverMode() 来检查在节电模式处于活动状态时设备位置功能的行为。如果返回 LOCATION_MODE_FOREGROUND_ONLY,则在开启节电模式时,即使屏幕处于关闭状态,应用在处于前台或运行前台服务时仍会继续接收位置更新。

后台位置信息

如果应用中的某项功能持续与其他用户共享位置或使用 Geofencing API,则该应用需要后台位置访问权限。示例包括

在家庭位置共享应用中,某项功能允许用户持续与家人共享位置。

在物联网 (IoT) 应用中,某项功能允许用户配置其家居设备,使其在用户离家时关闭,在用户回家时重新开启。

如果在除前台位置部分所述情况之外的任何情况下访问设备的当前位置,系统便会认为您的应用正在使用后台位置。后台位置精度与前台位置精度相同,具体取决于应用声明的位置权限。

在 Android 10(API 级别 29)及更高版本中,您必须在应用清单中声明 ACCESS_BACKGROUND_LOCATION 权限,以便在运行时请求后台位置访问权限。在较低版本的 Android 中,当您的应用获得前台位置访问权限时,它也会自动获得后台位置访问权限。

注意:Google Play 商店针对设备位置信息制定了位置信息政策,将后台位置访问权限限制在核心功能需要该权限且符合相关政策要求的应用内。

准确率

Android 支持以下位置准确度级别

大致位置

提供设备位置估算值。如果此位置估算值来自 LocationManagerService 或 FusedLocationProvider,则该估算值的精确度在 3 平方公里(约 1.2 平方英里)以内。当您声明 ACCESS_COARSE_LOCATION 权限但未声明 ACCESS_FINE_LOCATION 权限时,您的应用可以接收此准确度级别的定位。

精确位置

提供尽可能准确的设备位置估算值。如果位置估算值来自 LocationManagerService 或 FusedLocationProvider,则该估算值通常在 50 米(160 英尺)以内,有时甚至达到几米(10 英尺)或更高的精确度。当您声明 ACCESS_FINE_LOCATION 权限时,您的应用可以接收此准确度级别的定位。

如果用户授予大致位置权限,无论您的应用声明了哪些位置权限,您的应用都只能访问大致位置。

当用户仅授予大致位置访问权限时,应用应仍能正常运行。如果您应用中的某项功能绝对需要使用 ACCESS_FINE_LOCATION 权限访问精确位置,您可以请求用户允许应用访问精确位置。

后台位置授予提醒

在 Android 10(API 级别 29)及更高版本中,在用户授予后台位置访问权限后,当应用中的某项功能第一次在后台访问设备位置时,系统会安排向用户发送一条通知。此通知旨在提醒用户,他们已允许应用始终访问设备位置。图 8 显示了一个通知示例。

检查应用 SDK 依赖项中的位置需求

检查您的应用是否使用了任何依赖于位置权限(尤其是 ACCESS_FINE_LOCATION 权限)的 SDK。如需了解详情,请阅读 Medium 上的 了解 SDK 依赖项的行为博文。

其他资源

有关 Android 中位置权限的更多信息,请查看以下材料:

Codelabs

隐私最佳实践

视频

如何查找潜在的后台位置使用情况

示例

示例应用,用于演示如何使用位置权限。

相关推荐

dnf进入卢克副本要完成什么任务 卢克团队前置任务详解
《辐射4》专区
365bet足球联赛

《辐射4》专区

12-24 👁️ 6542
Chinese-English dictionary
最正规英国365网站

Chinese-English dictionary

02-02 👁️ 4095