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">
然后,您的应用必须在单独的操作中请求这些权限:
- 检查是否已授予
BODY_SENSORS
。否则,请申请该权限。 - 检查是否已授予
BODY_SENSORS_BACKGROUND
。如尚未授予,请申请相应权限。
注意:如果您的应用同时请求这两项身体传感器权限,系统会忽略该请求,且不会向您的应用授予任一权限。
在 Android 13(API 级别 33)及更高版本中,运行时权限对话框不包含“始终允许”选项。相反,用户必须在系统设置中启用始终可用的后台传感器访问权限,如图 1 所示。授予 BODY_SENSORS
权限后请求 BODY_SENSORS_BACKGROUND
权限时,您可以帮助用户前往此设置页面。如果用户拒绝始终可用的访问权限,也应能够继续使用您的应用。
以较低版本为目标平台的应用
如果您的应用以 Android 13 之前的 Android 版本为目标平台,当您请求 BODY_SENSORS
权限时,系统不会自动授予后台访问权限。相反,用户会看到一个系统对话框,邀请用户转到应用的传感器权限设置,如图 2 所示。然后,用户必须在该设置页面上启用后台传感器使用权限。
用户可以拒绝后台访问。这与应用在后台运行时撤消 BODY_SENSORS
权限的效果相同。如果某个应用在没有后台访问权限的情况下使用 PassiveMonitoringClient
并进入后台,该应用会失去 BODY_SENSORS
权限,并且系统会调用 onPermissionLost()
回调函数。因此,遵循有关请求运行时权限的最佳实践特别重要。