如何使用 Compose Accompanist 在旧设备上使用新权限?

问题描述 投票:0回答:1

使用 Accompanist Permission 库 (https://google.github.io/accompanist/permissions/) 中的 Jetpack Compose 权限是一种很好的反应方式。但是,我不清楚如何处理取决于所使用的操作系统版本的权限。

例如,Android Tiramisu/33 中通知的选择退出发生了变化,现在可以使用 POST_NOTIFICATIONS 权限选择加入。那么问题来了,如何使用

val permissionState: PermissionState = rememberPermissionState(
        permission = Manifest.permission.POST_NOTIFICATIONS
    )

...当 POST_NOTIFICATIONS API 无法在 Android 9 上引用时。我能想到的唯一解决方法(感觉像是黑客)是回退到默认情况下自动授予的其他权限,即互联网许可。像这样:

val permissionState: PermissionState = rememberPermissionState(
        permission = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
            Manifest.permission.POST_NOTIFICATIONS else Manifest.permission.INTERNET
    )

还有比上面提到的更好的解决方案吗?

android permissions android-jetpack-compose jetpack jetpack-compose-accompanist
1个回答
0
投票

有一个更好的解决方法:

 val permissionState = rememberMultiplePermissionsState(
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
        listOf(Manifest.permission.POST_NOTIFICATIONS)
    } else {
        // permission not needed
        emptyList()
    }
© www.soinside.com 2019 - 2024. All rights reserved.