Manuel Lorenzo
08/24/2022, 1:59 PM@OptIn(ExperimentalPermissionsApi::class)
@Composable
fun RequestPermissions(content: @Composable () -> Unit) {
val permissionsState =
rememberPermissionState(
permission = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
Manifest.permission.MANAGE_EXTERNAL_STORAGE
} else {
Manifest.permission.READ_EXTERNAL_STORAGE
}
)
when (permissionsState.permission) {
Manifest.permission.READ_EXTERNAL_STORAGE -> {
when {
permissionsState.status.isGranted -> {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
content()
}
}
permissionsState.status.shouldShowRationale -> {
Text(text = "Permission is needed")
}
!permissionsState.status.isGranted && !permissionsState.status.shouldShowRationale -> {
requestStoragePermission(this@MainActivity)
}
}
}
Manifest.permission.MANAGE_EXTERNAL_STORAGE -> {
when {
permissionsState.status.isGranted -> {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
content()
}
}
permissionsState.status.shouldShowRationale -> {
Text(text = "Permission is needed")
}
!permissionsState.status.isGranted && !permissionsState.status.shouldShowRationale -> {
requestStoragePermission(this@MainActivity)
}
}
}
}
}
}