# PermissionController

# PermissionController

Artifact:[androidx.health.connect:connect-client](https://developer.android.com/jetpack/androidx/releases/health-connect)  
[View Source](https://cs.android.com/search?q=file:androidx/health/connect/client/PermissionController.kt+class:androidx.health.connect.client.PermissionController)  
Added in[1.1.0](https://developer.android.com/jetpack/androidx/releases/health-connect#1.1.0)

*** ** * ** ***

Kotlin\|[Java](https://developer.android.com/reference/androidx/health/connect/client/PermissionController "View this page in Java")

<br />

```
interface PermissionController
```

<br />

Known direct subclasses  
[FakePermissionController](https://developer.android.com/reference/kotlin/androidx/health/connect/client/testing/FakePermissionController)  

|--------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [FakePermissionController](https://developer.android.com/reference/kotlin/androidx/health/connect/client/testing/FakePermissionController) | A fake[PermissionController](https://developer.android.com/reference/kotlin/androidx/health/connect/client/PermissionController)that enables full control of permissions in tests for a[HealthConnectClient](https://developer.android.com/reference/kotlin/androidx/health/connect/client/HealthConnectClient). |

*** ** * ** ***

Interface for operations related to permissions.

## Summary

|                                                                                                                                                                                                                                   ### Public companion functions                                                                                                                                                                                                                                    |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [ActivityResultContract](https://developer.android.com/reference/kotlin/androidx/activity/result/contract/ActivityResultContract)`<`[Set](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-set/index.html)`<`[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)`>, `[Set](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-set/index.html)`<`[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)`>>` | [createRequestPermissionResultContract](https://developer.android.com/reference/kotlin/androidx/health/connect/client/PermissionController#createRequestPermissionResultContract(kotlin.String))`(providerPackageName: `[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)`)` Creates an[ActivityResultContract](https://developer.android.com/reference/kotlin/androidx/activity/result/contract/ActivityResultContract)to request Health permissions. |

|                                                                                   ### Public functions                                                                                   |
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `suspend `[Set](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-set/index.html)`<`[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)`>` | [getGrantedPermissions](https://developer.android.com/reference/kotlin/androidx/health/connect/client/PermissionController#getGrantedPermissions())`()` Returns a set of all health permissions granted by the user to the calling app.                                                                                                          |
| `suspend `[Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)                                                                                                  | [revokeAllPermissions](https://developer.android.com/reference/kotlin/androidx/health/connect/client/PermissionController#revokeAllPermissions())`()` Revokes all previously granted[HealthPermission](https://developer.android.com/reference/kotlin/androidx/health/connect/client/permission/HealthPermission)by the user to the calling app. |

## Public companion functions

### createRequestPermissionResultContract

Added in[1.1.0](https://developer.android.com/jetpack/androidx/releases/health-connect#1.1.0)  

```
fun createRequestPermissionResultContract(
    providerPackageName: String = DEFAULT_PROVIDER_PACKAGE_NAME
): ActivityResultContract<Set<String>, Set<String>>
```

Creates an[ActivityResultContract](https://developer.android.com/reference/kotlin/androidx/activity/result/contract/ActivityResultContract)to request Health permissions.  

```kotlin
import androidx.health.connect.client.PermissionController
import androidx.health.connect.client.permission.HealthPermission
import androidx.health.connect.client.records.StepsRecord

val requestPermission =
    activity.registerForActivityResult(
        PermissionController.createRequestPermissionResultContract()
    ) { grantedPermissions: Set<String> ->
        if (
            grantedPermissions.contains(HealthPermission.getReadPermission(StepsRecord::class))
        ) {
            // Read or process steps related health records.
        } else {
            // user denied permission
        }
    }
requestPermission.launch(setOf(HealthPermission.getReadPermission(StepsRecord::class)))
```  

|                                                                 Parameters                                                                 |
|--------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------|
| `providerPackageName: `[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)` = DEFAULT_PROVIDER_PACKAGE_NAME` | Optional provider package name to request health permissions from. |

|                                                                                                                                              See also                                                                                                                                               |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---|
| [registerForActivityResult](https://developer.android.com/reference/kotlin/androidx/activity/ComponentActivity#registerForActivityResult(androidx.activity.result.contract.ActivityResultContract,androidx.activity.result.ActivityResultRegistry,androidx.activity.result.ActivityResultCallback)) |   |

## Public functions

### getGrantedPermissions

```
suspend fun getGrantedPermissions(): Set<String>
```

Returns a set of all health permissions granted by the user to the calling app.  

```kotlin
import androidx.health.connect.client.permission.HealthPermission
import androidx.health.connect.client.records.StepsRecord

val grantedPermissions = permissionController.getGrantedPermissions()

if (grantedPermissions.contains(HealthPermission.getReadPermission(StepsRecord::class))) {
    // Read or process steps related health records.
} else {
    // user denied permission
}
```  

|                                                                                    Returns                                                                                     |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------|
| [Set](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-set/index.html)`<`[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)`>` | set of granted permissions. |

|                                                          Throws                                                          |
|--------------------------------------------------------------------------------------------------------------------------|--------------------------------------|
| [android.os.RemoteException](https://developer.android.com/reference/android/os/RemoteException.html)                    | For any IPC transportation failures. |
| [java.io.IOException](https://developer.android.com/reference/java/io/IOException.html)                                  | For any disk I/O issues.             |
| [kotlin.IllegalStateException](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html) | If service is not available.         |

### revokeAllPermissions

Added in[1.1.0](https://developer.android.com/jetpack/androidx/releases/health-connect#1.1.0)  

```
suspend fun revokeAllPermissions(): Unit
```

Revokes all previously granted[HealthPermission](https://developer.android.com/reference/kotlin/androidx/health/connect/client/permission/HealthPermission)by the user to the calling app.  

|                                                          Throws                                                          |
|--------------------------------------------------------------------------------------------------------------------------|--------------------------------------|
| [android.os.RemoteException](https://developer.android.com/reference/android/os/RemoteException.html)                    | For any IPC transportation failures. |
| [java.io.IOException](https://developer.android.com/reference/java/io/IOException.html)                                  | For any disk I/O issues.             |
| [kotlin.IllegalStateException](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html) | If service is not available.         |