Cómo comprobar la disponibilidad de las funciones

Cuando se agregan funciones nuevas a Health Connect, es posible que los usuarios no siempre actualicen su versión de Health Connect. La API de Feature Availability es una forma de verificar si una función de Health Connect está disponible en el dispositivo del usuario y decidir qué acción tomar.

Comenzar

La API de Feature Availability comparte la misma dependencia que el SDK de Health Connect. Para comenzar, verifica que, al menos, la versión 1.1.0-alpha08 esté en tu archivo build.gradle:

dependencies {
  implementation("androidx.health.connect:connect-client:1.1.0-alpha08")
}

Cómo realizar la verificación

La función principal para verificar la disponibilidad de funciones es getFeatureStatus(). Devuelve las constantes de números enteros FEATURE_STATUS_AVAILABLE o FEATURE_STATUS_UNAVAILABLE:

Para determinar si el dispositivo de un usuario admite la lectura de datos de salud en segundo plano en Health Connect, verifica la disponibilidad de FEATURE_READ_HEALTH_DATA_IN_BACKGROUND en el cliente:

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

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

Para obtener una lista de todas las marcas de funciones disponibles, consulta la página de referencia de HealthConnectFeatures.

Cómo controlar la falta de disponibilidad de funciones

Si una función no está disponible en el dispositivo de un usuario, es posible que una actualización la habilite. Puedes considerar dirigir al usuario para que actualice Health Connect si no tiene la versión compatible más reciente en su dispositivo. Sin embargo, los usuarios que usan el APK (en Android 13 y versiones anteriores) no pueden usar las funciones del módulo del sistema que solo están disponibles en dispositivos que ejecutan Android 14 o versiones posteriores.

En el caso de los tipos de dispositivos extendidos, si FEATURE_EXTENDED_DEVICE_TYPES no está disponible en el dispositivo del usuario, esos valores se tratan como Device.TYPE_UNKNOWN. Proporciona una alternativa razonable en la lógica de escritura y de la IU.