Compose 权限处理:请求与状态管理

2024-06-21 · 22 min · 系统

Android 运行时权限是应用开发中的重要环节。Compose 提供了简洁的 API 来处理权限请求。

一、单个权限请求

val permissionLauncher = rememberLauncherForActivityResult(
    contract = ActivityResultContracts.RequestPermission()
) { isGranted ->
    hasCameraPermission = isGranted
}

Button(onClick = { 
    permissionLauncher.launch(Manifest.permission.CAMERA) 
}) {
    Text("请求相机权限")
}

二、多个权限请求

val launcher = rememberLauncherForActivityResult(
    ActivityResultContracts.RequestMultiplePermissions()
) { permissionsMap ->
    allGranted = permissionsMap.values.all { it }
}

launcher.launch(arrayOf(
    Manifest.permission.CAMERA,
    Manifest.permission.RECORD_AUDIO
))

三、处理永久拒绝

// 引导用户到设置页面
Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply {
    data = Uri.fromParts("package", context.packageName, null)
    context.startActivity(this)
}

四、最佳实践

总结