请求后台访问人体传感器数据

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权限。如果未授予,则请求此权限。
The all-the-time option is the first list item on the settings screen
图 1. 传感器设置包括一个名为始终的选项,该选项授予后台传感器数据访问权限。

警告:如果您的应用同时请求人体传感器权限,系统会忽略此请求,并且不会向您的应用授予任何权限。

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

应用目标早期版本

The link text is 'go to settings'
图 2. 权限对话框包含一个链接,可引导用户导航到系统设置中的应用传感器权限。

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

用户可以拒绝后台访问权限。这与在您的应用在后台运行时撤销BODY_SENSORS权限的效果相同。当应用使用PassiveMonitoringClient但没有后台访问权限并进入后台时,应用会失去BODY_SENSORS权限,并且会调用onPermissionLost()回调。因此,遵循请求运行时权限的最佳实践尤其重要。