We're making some changes to the Google Fit APIs. Learn about how these changes might affect your app. Read our new policy.

Android Permissions

Android permissions aim to protect the privacy of an Android user. They prompt the user when apps want to access data types for sensitive data like contacts or photos, and system features like location or step detection. Users grant these permissions when first downloading your app.

If your app needs access to any of these data types (a subset of the Google Fit data types), request the relevant Android permission before requesting the OAuth permissions. See below.

Example of the Android permissions consent screen
Figure 1.The Android permissions consent screen.

Data types that need Android permissions

To access these physical activity data types, you'll need to request the ACTIVITY_RECOGNITION Android permission:

  • To record these data types:

    • com.google.step_count.delta
    • com.google.step_count.cumulative
    • com.google.step_count.cadence
    • com.google.activity.segment
    • com.google.calories.expended
  • To read these data types:

    • com.google.step_count.delta
    • com.google.step_count.cumulative
    • com.google.step_count.cadence
    • com.google.activity.segment
    • com.google.activity.exercise

To access these data types, you'll need to request the ACCESS_FINE_LOCATION Android permission:

  • To read these data types:
    • com.google.distance.delta
    • com.google.location.sample
    • com.google.location.bounding_box
    • com.google.speed

To record these data types, you'll need to request the BODY_SENSORS Android permission:

  • com.google.heart_rate.bpm

Requesting Android permissions

Learn about requesting Android permissions, the physical activity recognition permission, the fine location permission, and the body sensors permission.

To access the data types above with the Google Fit APIs, you'll need to implement logic to handle requesting Android permissions for both Android 10 and previous versions of Android. These examples use the ACTIVITY_RECOGNITION permission.

Android 10

So your app can target API level 29 or above, request the permission from the user, and register the permission in the application manifest file.

  1. Add the permission to the manifest file.

    <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>
    
  2. Check if the permission is granted:

    if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.ACTIVITY_RECOGNITION)
              != PackageManager.PERMISSION_GRANTED) {
          // Permission is not granted
    }
    
  3. If permission isn't already granted, request the permission:

    ActivityCompat.requestPermissions(thisActivity,
                arrayOf(Manifest.permission.ACTIVITY_RECOGNITION),
                MY_PERMISSIONS_REQUEST_ACTIVITY_RECOGNITION)
    

Android 9 and below

So your app can target API level 28 or below:

  1. Request the com.google.android.gms.permission.ACTIVITY_RECOGNITION permission.

  2. Add the permission to the manifest file.

    <uses-permission android:name="android.gms.permission.ACTIVITY_RECOGNITION"/>