Skip to content
AF
Phone Sensors

Android 16: BODY_SENSORS gives way to android.permission.health

Last verified October 3, 2026 · 3 min read

For apps targeting Android 16 (API level 36) or higher, Google's behaviour-changes page says any API that previously required BODY_SENSORS or BODY_SENSORS_BACKGROUND now requires the corresponding granular health permission, the same permissions that guard Health Connect. The affected surfaces Google lists are HEART_RATE_BPM in Health Services on Wear OS, Sensor.TYPE_HEART_RATE, heartRateAccuracy and heartRateBpm in Wear OS ProtoLayout, and FOREGROUND_SERVICE_TYPE_HEALTH. Request READ_HEART_RATE (or the matching permission for SpO2 or skin temperature) instead of BODY_SENSORS for while-in-use access, and READ_HEALTH_DATA_IN_BACKGROUND instead of BODY_SENSORS_BACKGROUND. Phone apps that migrate must also declare an activity showing their privacy policy, and Google warns the permission is revoked if they do not.

Covered here:Health Connect

This is a narrow change with a wide blast radius: one permission that heart-rate features relied on since API level 20 is replaced by a family of Health Connect permissions. This page states only what Google's Android 16 behaviour changes, the HealthPermissions reference, the Health Connect get-started guide, the Health Services active data guide and the foreground service types page say, as read on 2026-10-03.

What Google says changed#

"For apps targeting Android 16 (API level 36) or higher, BODY_SENSORS permissions use more granular permissions under android.permissions.health, which Health Connect also uses. As of Android 16, any API previously requiring BODY_SENSORS or BODY_SENSORS_BACKGROUND requires the corresponding android.permissions.health permission instead."

Note the spelling: the behaviour-changes page writes android.permissions.health. The permission strings in the HealthPermissions reference begin android.permission.health., singular. Use the reference's strings in your manifest.

What it affects, per Google#

  • HEART_RATE_BPM from Health Services on Wear OS
  • Sensor.TYPE_HEART_RATE from Android Sensor Manager
  • heartRateAccuracy and heartRateBpm from ProtoLayout on Wear OS
  • FOREGROUND_SERVICE_TYPE_HEALTH, "where the respective android.permission.health permission is needed in place of BODY_SENSORS"

The replacements#

BeforeFrom API level 36Constant string (HealthPermissions reference)Added
BODY_SENSORS for heart rateREAD_HEART_RATEandroid.permission.health.READ_HEART_RATEAPI level 34
BODY_SENSORS for SpO2READ_OXYGEN_SATURATIONandroid.permission.health.READ_OXYGEN_SATURATIONAPI level 34
BODY_SENSORS for skin temperatureREAD_SKIN_TEMPERATUREandroid.permission.health.READ_SKIN_TEMPERATUREAPI level 35
BODY_SENSORS_BACKGROUNDREAD_HEALTH_DATA_IN_BACKGROUNDandroid.permission.health.READ_HEALTH_DATA_IN_BACKGROUNDAPI level 35

Google's guidance in its own words: "For while-in-use monitoring of Heart Rate, SpO2, or Skin Temperature: request the granular permission under android.permissions.health, such as READ_HEART_RATE instead of BODY_SENSORS," and "For background sensor access: request READ_HEALTH_DATA_IN_BACKGROUND instead of BODY_SENSORS_BACKGROUND." The reference marks each of these as protection level dangerous, so they are runtime grants.

The privacy policy requirement on phones#

"Mobile apps migrating to use the READ_HEART_RATE and other granular permissions must also declare an activity to display the app's privacy policy. This is the same requirement as Health Connect." Then: "Failure to provide the rationale for mobile apps will result in the permission being revoked."

Health Connect's get-started guide shows the shape: an activity handling androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE for Android 13 and lower, plus, from Android 14, an activity-alias guarded by android.permission.START_VIEW_PERMISSION_USAGE that handles android.intent.action.VIEW_PERMISSION_USAGE with the category android.intent.category.HEALTH_PERMISSIONS. The guide adds: "The activity must display the same privacy policy you provide for your app in the Google Play Console." Wiring Health Connect itself is covered in the Health Connect integration guide.

Choosing the permission at runtime#

The foreground service types page now lists the prerequisite as "BODY_SENSORS on API 35 and lower", and the Health Services guide tells Wear OS apps to confirm "runtime permissions for body sensors (API level 35 or lower) or heart rate (API level 36+)". A sketch of that split:

val heartRatePermission =
    if (Build.VERSION.SDK_INT >= 36) HealthPermissions.READ_HEART_RATE  // android.permission.health.READ_HEART_RATE
    else Manifest.permission.BODY_SENSORS

// request heartRatePermission at runtime with your existing permission flow

Google's behaviour-changes page frames the change by target SDK and the guides frame it by API level. Test both an Android 16 device and an older one before shipping, with your real target.

What is not on Google's list#

Step sensors. Sensor.TYPE_STEP_COUNTER and TYPE_STEP_DETECTOR were documented under ACTIVITY_RECOGNITION, not BODY_SENSORS, and Google's Android 16 list names neither; see the step counter page. The Manifest.permission reference entry for BODY_SENSORS, as we read it, still describes the permission without mentioning Android 16.

Pitfalls#

  • Copying the behaviour-changes spelling. Use android.permission.health.* from the reference.
  • Migrating the permission and not the privacy policy activity. Google says the permission is revoked.
  • Dropping BODY_SENSORS for older devices. The prerequisite lists still name it for API 35 and lower.
  • Forgetting background access. READ_HEART_RATE does not cover background reads; READ_HEALTH_DATA_IN_BACKGROUND is the replacement for BODY_SENSORS_BACKGROUND.
  • Leaving a health foreground service on the old permission. FOREGROUND_SERVICE_TYPE_HEALTH is on Google's affected list; see foregroundServiceType="health".

Watch apps feel this first; the Wear OS side is on Wear OS Health Services and Wear OS exercise tracking.

Frequently asked questions

What replaces BODY_SENSORS_BACKGROUND on Android 16?
READ_HEALTH_DATA_IN_BACKGROUND, whose constant string is android.permission.health.READ_HEALTH_DATA_IN_BACKGROUND. Google's Android 16 behaviour-changes page tells apps that need background sensor access to request it instead of BODY_SENSORS_BACKGROUND, and the HealthPermissions reference describes it as allowing an application to read health data of any type in the background, with protection level dangerous. Older API levels still use the old pair.
Does the Android 16 health permission change affect the step counter sensor?
Google's list does not name it. The Android 16 behaviour-changes page lists Health Services HEART_RATE_BPM, Sensor.TYPE_HEART_RATE, two ProtoLayout heart-rate sources and FOREGROUND_SERVICE_TYPE_HEALTH as affected. The step counter and step detector sensors are documented as requiring android.permission.ACTIVITY_RECOGNITION, not BODY_SENSORS, so the replacement of BODY_SENSORS does not touch the permission they were documented under.
Why was my app's READ_HEART_RATE permission revoked on Android 16?
The documented cause is a missing privacy policy activity. Google's Android 16 page says mobile apps migrating to READ_HEART_RATE and the other granular permissions must declare an activity that displays the app's privacy policy, the same requirement as Health Connect, and that failure to provide the rationale will result in the permission being revoked. Health Connect's get-started guide shows the intent filters to declare and says the activity must show the same policy you give Google Play.
Which permission does Sensor.TYPE_HEART_RATE need on Android 16?
For apps targeting Android 16 (API level 36) or higher, Google lists Sensor.TYPE_HEART_RATE among the APIs that now require the corresponding health permission instead of BODY_SENSORS. For while-in-use heart rate that is READ_HEART_RATE, android.permission.health.READ_HEART_RATE; for background access, READ_HEALTH_DATA_IN_BACKGROUND. On API 35 and lower, Google's foreground service guidance still names BODY_SENSORS.

All 40 questions in Phone Sensors →

Keep reading

Elsewhere on the site

Pages that share this one’s concepts and sources, from other sections.

Next steps

Was this page useful?

Independent comparison, last reviewed October 3, 2026. Pricing, rate limits, and feature availability change often — confirm current details in each provider’s official documentation before you commit. Product and company names are trademarks of their respective owners; AIFitnessAPI is not affiliated with, endorsed by, or sponsored by any product listed here.

← All phone sensors · by AIFitnessAPI