---
title: "Health Connect SDK_UNAVAILABLE and SDK_UNAVAILABLE_PROVIDER_UPDATE_REQUIRED: What Each Status Means"
canonical: "https://aifitnessapi.com/fix/health-connect-not-available"
cluster: "Troubleshooting"
primary_query: "health connect sdk_unavailable_provider_update_required"
last_reviewed: "2026-10-03"
description: "getSdkStatus returned SDK_UNAVAILABLE or SDK_UNAVAILABLE_PROVIDER_UPDATE_REQUIRED? What Google says each status means, and the fix for each."
publisher: "AIFitnessAPI — independent, not sponsored"
cite_as: "\"Health Connect SDK_UNAVAILABLE and SDK_UNAVAILABLE_PROVIDER_UPDATE_REQUIRED: What Each Status Means\", AIFitnessAPI, https://aifitnessapi.com/fix/health-connect-not-available"
---

# Health Connect SDK_UNAVAILABLE and SDK_UNAVAILABLE_PROVIDER_UPDATE_REQUIRED: What Each Status Means

> HealthConnectClient.getSdkStatus returns one of three constants. Google documents SDK_UNAVAILABLE_PROVIDER_UPDATE_REQUIRED (value 2) as "the provider is either not installed or needs to be updated", so send the user to the Health Connect listing on the Play Store. SDK_UNAVAILABLE (value 1) means the SDK is unavailable on the device, for example because the Android version is too low, and Google says to hide every Health Connect entry point. Only SDK_AVAILABLE (value 3) means you can call getOrCreate.

- Canonical: https://aifitnessapi.com/fix/health-connect-not-available
- Last reviewed: 2026-10-03
- Publisher: AIFitnessAPI (https://aifitnessapi.com) — independent, not sponsored
- Cite as: "Health Connect SDK_UNAVAILABLE and SDK_UNAVAILABLE_PROVIDER_UPDATE_REQUIRED: What Each Status Means", AIFitnessAPI, https://aifitnessapi.com/fix/health-connect-not-available

---

`HealthConnectClient.getSdkStatus(context)` came back with something other than `SDK_AVAILABLE`, or your log shows a bare `1` or `2` where you expected a client. Those numbers are the status constants. Android's Jetpack [`HealthConnectClient` reference](https://developer.android.com/reference/kotlin/androidx/health/connect/client/HealthConnectClient) (fetched October 3, 2026) defines exactly three, and each one asks for a different response.

## The three statuses, in Google's words

| Constant | Value | Google's description | What Google says to do |
| --- | --- | --- | --- |
| `SDK_UNAVAILABLE` | 1 | "The Health Connect SDK is unavailable on this device at the time. This can be due to the device running a lower than required Android Version." | "Apps should hide any integration points to Health Connect in this case." |
| `SDK_UNAVAILABLE_PROVIDER_UPDATE_REQUIRED` | 2 | "The Health Connect SDK APIs are currently unavailable, the provider is either not installed or needs to be updated." | "Apps may choose to redirect to package installers to find a suitable APK." |
| `SDK_AVAILABLE` | 3 | "The Health Connect SDK APIs are available." | "Apps can subsequently call getOrCreate to get an instance of HealthConnectClient." |

All three are marked "Added in 1.1.0" in the reference. If you log the raw integer, `2` means "install or update Health Connect", not "unsupported".

## Why the device is unavailable

Google's [availability page](https://developer.android.com/health-and-fitness/health-connect/availability) sets the floor: "Health Connect requires a mobile device running Android 9 (API 28) or higher with Google Play services installed." On Android 14 and higher, Health Connect is part of the system and is accessible in Settings. On Android 13 and lower, it is a publicly available app on the Google Play Store, and that is where "not installed or needs to be updated" comes from.

Two further rules from Google that produce an unavailable device:

- **Android 8.** Google's get-started guide notes that "the Health Connect SDK supports Android 8 (API level 26) or higher, while the Health Connect app is only compatible with Android 9 (API level 28) or higher." Your app can install on Android 8. Health Connect cannot run there.
- **Work profiles.** Google says "Health Connect is not supported on devices with work profiles. While users might be able to grant permissions in the work profile, the Health Connect APIs won't be usable, and no data will be written."

## Why getOrCreate crashes when you skip the check

The reference lists what `getOrCreate` throws if you call it on a device that is not ready: `UnsupportedOperationException` "if service not available due to SDK version too low or running in a profile", and `IllegalStateException` "if the SDK is not available". Calling `getSdkStatus` first turns a crash into a branch.

## The fix, per status

Google's get-started guide also asks you to declare the Health Connect package in your manifest before you get a client, so check this first:

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

Then branch on the status. The update-required branch below follows the sample in Google's reference, which sends the user to the Play Store's Health Connect listing with an onboarding hand-off:

```kotlin
val providerPackageName = "com.google.android.apps.healthdata"

when (HealthConnectClient.getSdkStatus(context, providerPackageName)) {
    HealthConnectClient.SDK_AVAILABLE -> {
        val client = HealthConnectClient.getOrCreate(context)
        // proceed: check permissions, then read
    }
    HealthConnectClient.SDK_UNAVAILABLE_PROVIDER_UPDATE_REQUIRED -> {
        val uriString =
            "market://details?id=$providerPackageName&url=healthconnect%3A%2F%2Fonboarding"
        context.startActivity(
            Intent(Intent.ACTION_VIEW).apply {
                setPackage("com.android.vending")
                data = Uri.parse(uriString)
                putExtra("overlay", true)
                putExtra("callerId", context.packageName)
            }
        )
    }
    else -> {
        // SDK_UNAVAILABLE: hide every Health Connect entry point
    }
}
```

One inconsistency to know about: the user-facing text in Google's get-started sample for `SDK_UNAVAILABLE` asks the user to "ensure it is installed and updated", while the reference says to hide integration points for that status. We follow the reference. An install prompt belongs to the update-required status, and on an unavailable device it only sends the user looking for an app their phone cannot run.

## SDK_AVAILABLE is not the same as every feature available

A device can report `SDK_AVAILABLE` and still lack newer capabilities. Google's [feature availability guide](https://developer.android.com/health-and-fitness/health-connect/features/availability) says "When new features are added to Health Connect, users may not always update their version of Health Connect," and gives `getFeatureStatus` on `healthConnectClient.features`, which returns `FEATURE_STATUS_AVAILABLE` or `FEATURE_STATUS_UNAVAILABLE`. Check it for features such as `FEATURE_READ_HEALTH_DATA_IN_BACKGROUND` and `FEATURE_READ_HEALTH_DATA_HISTORY` before requesting their permissions.

## Treat status as something that changes

Our recommendation: call `getSdkStatus` each time the user reaches a Health Connect feature, not once at install. On Android 13 and lower, Health Connect is a separate Play Store app, so its state can change after your app checked it. On Android 14 Google says it is part of the system and cannot be uninstalled. A user who updates Health Connect from the Play Store should find your feature working the next time they open it, without reinstalling your app.

## Where to go next

Once the status is `SDK_AVAILABLE` and reads are still empty, work through [Health Connect returns no data](/fix/health-connect-no-data). If calls throw after the client exists, see [Health Connect SecurityException](/fix/health-connect-securityexception). The end-to-end setup is in the [Google Health Connect integration guide](/integrate/google-health-connect).

## Sources

- [developer.android.com/reference/kotlin/androidx/health/connect/client/HealthConnectClient](https://developer.android.com/reference/kotlin/androidx/health/connect/client/HealthConnectClient) — SDK_UNAVAILABLE, SDK_UNAVAILABLE_PROVIDER_UPDATE_REQUIRED, SDK_AVAILABLE values and descriptions; getOrCreate throws; Play Store redirect sample (checked 2026-10-03)
- [developer.android.com/health-and-fitness/health-connect/get-started](https://developer.android.com/health-and-fitness/health-connect/get-started) — queries package declaration, getSdkStatus sample and its SDK_UNAVAILABLE text, Android 8 SDK vs Android 9 app (checked 2026-10-03)
- [developer.android.com/health-and-fitness/health-connect/availability](https://developer.android.com/health-and-fitness/health-connect/availability) — Android 9 with Google Play services; system on 14+, Play app on 13 and lower; work profiles; cannot uninstall on 14 (checked 2026-10-03)
- [developer.android.com/health-and-fitness/health-connect/features/availability](https://developer.android.com/health-and-fitness/health-connect/features/availability) — getFeatureStatus, FEATURE_STATUS_AVAILABLE/UNAVAILABLE, feature flags (checked 2026-10-03)

## FAQ

### What do the numbers 1, 2 and 3 from getSdkStatus mean?

They are the three status constants in Android's Jetpack HealthConnectClient reference. 1 is SDK_UNAVAILABLE, meaning Health Connect is unavailable on the device. 2 is SDK_UNAVAILABLE_PROVIDER_UPDATE_REQUIRED, meaning the provider is not installed or needs an update. 3 is SDK_AVAILABLE, meaning you can call getOrCreate. Compare against the named constants rather than the integers.

[Permalink](https://aifitnessapi.com/fix/health-connect-not-available#faq-1)

### Why does HealthConnectClient.getOrCreate crash instead of returning a client?

Because the device is not ready and nothing checked first. Android's reference says getOrCreate throws UnsupportedOperationException if the service is not available due to an SDK version that is too low or running in a profile, and IllegalStateException if the SDK is not available. Call getSdkStatus first and only call getOrCreate on SDK_AVAILABLE.

[Permalink](https://aifitnessapi.com/fix/health-connect-not-available#faq-2)

### Can Health Connect work inside an Android work profile?

No. Google's availability page says Health Connect is not supported on devices with work profiles. Users may be able to grant permissions in the work profile, but the APIs won't be usable and no data will be written, because the work profile is never considered to be in the foreground. Plan for this if your users are on managed Google Workspace devices.

[Permalink](https://aifitnessapi.com/fix/health-connect-not-available#faq-3)

### Does SDK_AVAILABLE mean every Health Connect feature works?

No. SDK_AVAILABLE means the core APIs are usable. Google's feature availability guide notes that users may not always update Health Connect, so newer capabilities such as background reads or reading history need their own getFeatureStatus check, which returns FEATURE_STATUS_AVAILABLE or FEATURE_STATUS_UNAVAILABLE, before you request their permissions.

[Permalink](https://aifitnessapi.com/fix/health-connect-not-available#faq-4)
