I want to know how to detect when the user has revoked permission(denied permission twice) in the accompanist permission library, I also checked the library's GitHub repository and samples are old.
I am using,
compose_version = '1.2.0-alpha03'
accompanist_version = '0.24.2-alpha'
Here is my code snippet,
@ExperimentalMaterial3Api
@ExperimentalPermissionsApi
@Composable
fun CameraPermission() {
/* Camera permission state.*/
val cameraPermissionState = rememberPermissionState(permission = Manifest.permission.CAMERA)
val context = LocalContext.current
val intent =Intent(
Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
Uri.fromParts("package", BuildConfig.APPLICATION_ID, null))
when (cameraPermissionState.status) {
/* If the camera permission is granted, then show screen with the feature enabled.*/
PermissionStatus.Granted -> {
Text("Camera permission Granted")
}
is PermissionStatus.Denied -> {
/*
* This is a rationale explaining why we need the camera permission.
* We are displaying this because the user has denied the permission once.
* */
if (cameraPermissionState.status.shouldShowRationale) {
/*
* If the user has denied the permission but the rationale can be shown, then gently
* explain why the app requires this permission
* */
Column {
Text(text = "The camera is important for this app. Please grant the permission.")
Button(onClick = { cameraPermissionState.launchPermissionRequest() }) {
Text("Grant permission")
}
}
} else {
/*
* If it's the first time the user lands on this feature, or the user doesn't want to
* be asked again for this permission, explain that the permission is required
* */
Column {
Text(text = "Camera permission required for this feature to be available. Please grant the permission")
Button(onClick = { cameraPermissionState.launchPermissionRequest() }) {
Text("Grant permission")
}
/*todo("permission denied twice.")*/
Text(text = "Camera permission denied twice. Please grant the permission")
Button(
onClick = {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(intent)
}
) {
Text("Open settings to grant permission.")
}
}
}
}
}
}