请求对身体传感器数据的后台访问权限

Android 13 和 Wear OS 4 引入了一种方式,可让应用从后台访问身体传感器(例如心率)。这种新的访问模式类似于为 Android 10(API 级别 29)中的后台位置信息使用权引入的访问模式。

如果您的应用需要在后台访问身体传感器信息(例如在后台监控健康服务数据时),您必须请求 BODY_SENSORS_BACKGROUND 权限。

按照隐私权最佳实践页面中所述,应用应仅在必须用于面向用户的功能时才获取 BODY_SENSORS_BACKGROUND 权限,并且以恰当的方式向用户披露请求的内容。

授予权限的过程取决于应用的目标 SDK 版本。

以 Android 13 或更高版本为目标平台的应用

除了现有的 BODY_SENSORS 权限之外,还应在清单文件中声明 BODY_SENSORS_BACKGROUND 权限:

<uses-permission android:name="android.permission.BODY_SENSORS">
<uses-permission android:name="android.permission.BODY_SENSORS_BACKGROUND">

然后,您的应用必须在单独的操作中请求这些权限:

  1. 检查是否已授予 BODY_SENSORS。否则,请申请该权限。
  2. 检查是否已授予 BODY_SENSORS_BACKGROUND。如尚未授予,请申请相应权限。
“始终”选项是设置屏幕上的第一个列表项
图 1. 传感器设置包括一个名为始终的选项,用于授予后台传感器数据访问权限。

注意:如果您的应用同时请求这两项身体传感器权限,系统会忽略该请求,且不会向您的应用授予任一权限。

在 Android 13(API 级别 33)及更高版本中,运行时权限对话框不包含“始终允许”选项。相反,用户必须在系统设置中启用始终可用的后台传感器访问权限,如图 1 所示。授予 BODY_SENSORS 权限后请求 BODY_SENSORS_BACKGROUND 权限时,您可以帮助用户前往此设置页面。如果用户拒绝始终可用的访问权限,也应能够继续使用您的应用。

以较低版本为目标平台的应用

链接文字为“前往设置”
图 2. 权限对话框包含一个链接,用于在系统设置中将用户引导至应用的传感器权限。

如果您的应用以 Android 13 之前的 Android 版本为目标平台,当您请求 BODY_SENSORS 权限时,系统不会自动授予后台访问权限。相反,用户会看到一个系统对话框,邀请用户转到应用的传感器权限设置,如图 2 所示。然后,用户必须在该设置页面上启用后台传感器使用权限。

用户可以拒绝后台访问。这与应用在后台运行时撤消 BODY_SENSORS 权限的效果相同。如果某个应用在没有后台访问权限的情况下使用 PassiveMonitoringClient 并进入后台,该应用会失去 BODY_SENSORS 权限,并且系统会调用 onPermissionLost() 回调函数。因此,遵循有关请求运行时权限的最佳实践特别重要。