在 Android 11 上接受拍摄的照片时,React 本机图像选择器没有响应

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

我在 Android 11 设备上遇到了 React-native-image-picker 的问题,拍照后,应用程序不会响应按下勾号(复选标记)图标来接受图像。相机界面允许我取消相机或重新拍摄图像,没有任何问题,但按勾号接受并保存图像不会按预期进行。在运行低于 11 的 Android 版本的设备上不会出现此问题,其中图像选择器按预期工作。

这是我用来启动相机的代码片段:

const requestGalleryPermission = async () => {
  try {
    const permissions = [
      PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,
      PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE,
      PermissionsAndroid.PERMISSIONS.CAMERA,
    ];
    const granted = await PermissionsAndroid.requestMultiple(permissions);

    const storageGranted = granted[PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE] === PermissionsAndroid.RESULTS.GRANTED;
    const writeGranted = granted[PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE] === PermissionsAndroid.RESULTS.GRANTED;
    const cameraGranted = granted[PermissionsAndroid.PERMISSIONS.CAMERA] === PermissionsAndroid.RESULTS.GRANTED;

    if (storageGranted && cameraGranted && writeGranted) {
      console.log('Both read storage and camera permissions granted');
      return true;
    } else {
      console.log('Read storage or camera permission denied');
      return false;
    }
  } catch (err) {
    console.warn('Permission request error:', err);
    return false;
  }
};

export const handleCameraLaunch = async (launchCameraEvent) => {
  const options = {
    mediaType: 'photo',
    includeBase64: true,
    maxHeight: 2000,
    maxWidth: 2000,
  };
  const permission = requestGalleryPermission();
  if (permission) {
    await launchCamera(options, response => {
      if (response.didCancel) {
        console.log('User cancelled camera');
      } else if (response.error) {
        console.log('Camera Error: ', response.error);
      } else {
        console.log('Taking photo');
        launchCameraEvent(response);
      }
    });
  }
};

我已确保授予所有必要的权限,并且 AndroidManifest.xml 包含 CAMERA 和 READ_EXTERNAL_STORAGE 的权限,并添加 android:requestLegacyExternalStorage="true"。我的目标是 API 级别 30 (Android 11),并已在多个设备上进行了测试。该问题似乎在 Android 11 上仍然存在。

我在网上发现了重写 onActivityResult 作为潜在修复方法的建议,但不确定如何在 React Native 上下文中继续执行该操作,或者这是否是正确的方法。

有人遇到过类似的问题或可以提供有关如何解决此问题的见解吗?任何帮助或指导将不胜感激。

android react-native react-native-image-picker
1个回答
0
投票

这个问题解决了吗?存在一个问题,即如果拍摄照片,则单击勾号后不会发生任何情况。取消效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.