在registerForActivityResult方法中使用ActivityResultLauncher对象时,应该先提前请求权限,并在权限被授予时才启动ActivityResultLauncher的launch方法。以下是示例代码:
// 在Activity中定义权限请求代码 private static final int REQUEST_CODE_PERMISSIONS = 100;
// 在Activity中定义需要请求的权限 private final String[] REQUIRED_PERMISSIONS = new String[]{ Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE };
// 在Activity中定义ActivityResultLauncher对象
private final ActivityResultLauncher
// 在Activity中定义权限请求Launcher对象
private final ActivityResultLauncher
// 在需要启动photoLauncher的地方调用以下方法,先请求权限 if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { // 权限已经被授予,直接启动photoLauncher的launch方法 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); photoLauncher.launch(intent); } else { // 权限还没被授予,请求权限 permissionLauncher.launch(REQUIRED_PERMISSIONS); }