google / accompanist

A collection of extension libraries for Jetpack Compose
https://google.github.io/accompanist
Apache License 2.0
7.42k stars 597 forks source link

[Permissions] Unable to request MANAGE_EXTERNAL_STORAGE #1777

Closed SkyD666 closed 3 months ago

SkyD666 commented 3 months ago

Description

No response after clicking the Apply button, allowed permission in the system, still indicates no permission

Steps to reproduce

val storagePermissionState = rememberMultiplePermissionsState(
    mutableListOf<String>().apply {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
            add(android.Manifest.permission.MANAGE_EXTERNAL_STORAGE)
        } else {
            add(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
            add(android.Manifest.permission.READ_EXTERNAL_STORAGE)
        }
    },
)
if (storagePermissionState.allPermissionsGranted) {
    MainScreen()
} else {
    RequestStoragePermissionScreen(storagePermissionState)
}

@Composable
fun RequestStoragePermissionScreen(permissionState: MultiplePermissionsState) {
    Scaffold { padding ->
        Column(
            modifier = Modifier
                .padding(padding)
                .fillMaxSize()
                .verticalScroll(rememberScrollState())
                .padding(horizontal = 30.dp),
            horizontalAlignment = Alignment.CenterHorizontally
        ) {
            Button(
                modifier = Modifier.padding(vertical = 30.dp),
                onClick = { permissionState.launchMultiplePermissionRequest() },
            ) {
                Text(stringResource(R.string.storage_permission_request_screen_request_permission))
            }
        }
    }
}
bentrengrove commented 3 months ago

MANAGE_EXTERNAL_STORAGE is not a runtime permission. Only runtime permissions will show permissions a dialog in app.

See the docs here https://developer.android.com/training/data-storage/manage-all-files