Search code examples
androidandroid-jetpack-composehealthconnect

Health Connect Permission Request Problem on Android 13 and below


The Health Connect permission view does not open on API < 34. It doesn't crash, if I click the button nothing happens. What is the problem?

val permissionRequestContract = PermissionController.createRequestPermissionResultContract()

val permissionsLauncher =
    rememberLauncherForActivityResult(
        contract = permissionRequestContract
    ) {
            ....
      }

Permissions are granted:

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    
    <uses-permission android:name="android.permission.health.READ_STEPS" />

    <uses-permission android:name="android.permission.health.READ_WEIGHT" />

    <uses-permission android:name="android.permission.health.READ_BODY_TEMPERATURE" />

    <queries>
        <package android:name="com.google.android.apps.healthdata" />
    </queries>
</manifest>

Launched:

Button(
    onClick = {
        permissionsLauncher.launch(REQUIRED_PERMISSIONS)
    },
) { 
    ...
  }

Permissions:

val REQUIRED_PERMISSIONS = setOf(
    HealthPermission.getReadPermission(BodyTemperatureRecord::class),
    HealthPermission.getReadPermission(StepsRecord::class),
    HealthPermission.getReadPermission(WeightRecord::class)
)

Solution

  • Go to AndroidManifest.xml and make sure that the relevant activity has the following intent-filter added:

    <intent-filter>
        <action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE"/>
        <category android:name="android.intent.category.HEALTH_PERMISSIONS"/>
      </intent-filter>
    

    See details