使用 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
)
还有比上面提到的更好的解决方案吗?
有一个更好的解决方法:
val permissionState = rememberMultiplePermissionsState(
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
listOf(Manifest.permission.POST_NOTIFICATIONS)
} else {
// permission not needed
emptyList()
}