在使用androidx.activity.result.contract.ActivityResultContracts.RequestPermission
时,可能会遇到在取消请求时存在问题的情况。以下是一个包含代码示例的解决方法:
ActivityResultLauncher
实例,用于处理权限请求的结果。例如:private ActivityResultLauncher requestPermissionLauncher = registerForActivityResult(
new ActivityResultContracts.RequestPermission(), result -> {
if (result) {
// 权限已授予
// 执行相关操作
} else {
// 权限被拒绝
// 执行相关操作
}
});
requestPermissionLauncher
来发起权限请求。例如:if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
== PackageManager.PERMISSION_GRANTED) {
// 权限已授予
// 执行相关操作
} else if (shouldShowRequestPermissionRationale(Manifest.permission.CAMERA)) {
// 显示权限解释对话框
new AlertDialog.Builder(this)
.setTitle("权限请求")
.setMessage("我们需要相机权限以进行拍照操作。")
.setPositiveButton("授予", (dialog, which) -> {
// 请求权限
requestPermissionLauncher.launch(Manifest.permission.CAMERA);
})
.setNegativeButton("取消", null)
.show();
} else {
// 直接请求权限
requestPermissionLauncher.launch(Manifest.permission.CAMERA);
}
通过以上步骤,您可以正确处理权限请求的结果,包括用户授予权限或拒绝权限的情况。