检查功能可用性

当“健康数据共享”中添加新功能时,用户不一定会更新其“健康数据共享”版本。Feature Availability API 可用于检查用户的设备上是否提供“健康数据共享”中的某项功能,并决定要采取的操作。

开始使用

Feature Availability API 与健康数据共享 SDK 具有相同的依赖项。首先,请验证您的 build.gradle 文件中是否至少包含 1.1.0-alpha08 版本:

dependencies {
  implementation("androidx.health.connect:connect-client:1.2.0-alpha06")
}

功能标志

下表列出了适用于健康数据共享的功能标志。如果用户的设备不支持某项功能,则该功能标志背后的功能将无法使用。

表:健康数据共享功能可用性标志
功能标志 数据类型 相关指南
FEATURE_ACTIVITY_INTENSITY 活动强度 锻炼
FEATURE_EXTENDED_DEVICE_TYPES 扩展设备类型 元数据要求
FEATURE_MATCHMAKING 配对
FEATURE_PERSONAL_HEALTH_RECORD 医疗记录 医疗记录数据格式
写入医疗数据
读取医疗数据
FEATURE_MINDFULNESS_SESSION 正念 追踪正念
FEATURE_PLANNED_EXERCISE 有计划的锻炼 锻炼
训练计划
FEATURE_READ_HEALTH_DATA_IN_BACKGROUND 在后台读取数据 后台读取示例
FEATURE_READ_HEALTH_DATA_HISTORY 读取历史数据 读取 30 天之前的数据
FEATURE_SKIN_TEMPERATURE 体表温度 Vitals
测量体表温度

执行检查

用于检查功能可用性的主要函数是 getFeatureStatus()。 这将返回整数常量 FEATURE_STATUS_AVAILABLE 或 FEATURE_STATUS_UNAVAILABLE:

如需确定用户的设备是否支持在 Health Connect 中后台读取健康数据,请在客户端上检查 FEATURE_READ_HEALTH_DATA_IN_BACKGROUND 的可用性:

if (healthConnectClient
     .features
     .getFeatureStatus(
       HealthConnectFeatures.FEATURE_READ_HEALTH_DATA_IN_BACKGROUND
     ) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {

  // Feature is available
} else {
  // Feature isn't available
}

如需查看所有可用功能标志的列表,请参阅 HealthConnectFeatures 参考页面。

处理功能不可用的情况

如果某项功能在用户的设备上不可用,更新可能会启用该功能。如果用户设备上没有受支持的最新版本,您可以考虑引导用户更新“健康数据共享”。不过,使用 APK 的用户(在 Android 13 及更低版本上)无法使用仅在搭载 Android 14 或更高版本的设备上提供的系统模块功能。

对于扩展设备类型,如果用户的设备上没有 FEATURE_EXTENDED_DEVICE_TYPES,这些值会被视为 Device.TYPE_UNKNOWN。在写入和界面逻辑中提供合理的后备方案。