Android 相机权限请求不会触发请求弹出窗口

Android camera permission request does not trigger request popup

我正在使用 React Native 并试图为我的 Android 应用授予应用摄像头权限。

我正在使用 RN v0.59.9 和 SDK 28。

使用下面的代码,应用程序成功请求访问联系人的权限,但它没有请求摄像头权限,即使摄像头权限请求的代码从 直接 official docs

可能出了什么问题?

import { PermissionsAndroid } from 'react-native';

export const requestPermissions = () => {
  PermissionsAndroid.request(
    PermissionsAndroid.PERMISSIONS.READ_CONTACTS,
    {
      'title': 'Contacts',
      'message': 'The app would like to view your contacts.'
    }
  )
  requestCameraPermission();
}

async function requestCameraPermission() {
  try {
    const granted = await PermissionsAndroid.request(
      PermissionsAndroid.PERMISSIONS.CAMERA,
      {
        title: 'Cool Photo App Camera Permission',
        message:
          'Cool Photo App needs access to your camera ' +
          'so you can take awesome pictures.',
        buttonNeutral: 'Ask Me Later',
        buttonNegative: 'Cancel',
        buttonPositive: 'OK',
      },
    );
    if (granted === PermissionsAndroid.RESULTS.GRANTED) {
      console.log('You can use the camera');
    } else {
      console.log('Camera permission denied');
    }
  } catch (err) {
    console.warn(err);
  }
}

更新

如果我像这样删除联系人权限请求:

export const requestPermissions = () => {
  // PermissionsAndroid.request(
  //   PermissionsAndroid.PERMISSIONS.READ_CONTACTS,
  //   {
  //     'title': 'Contacts',
  //     'message': 'The app would like to view your contacts.'
  //   }
  // )
  requestCameraPermission();
}

function requestCameraPermission() {
  PermissionsAndroid.request(
    PermissionsAndroid.PERMISSIONS.CAMERA,
    {
      title: 'Cool Photo App Camera Permission',
      message:
        'Cool Photo App needs access to your camera ' +
        'so you can take awesome pictures.',
      buttonNeutral: 'Ask Me Later',
      buttonNegative: 'Cancel',
      buttonPositive: 'OK',
    },
  );
}

相机请求有效,看来我不能像这样链接它们?

来自评论:权限对话框不会阻止,因此在您的第一个示例中,它会在显示联系人对话框后立即尝试请求相机权限。 IIRC,这将导致第二个请求立即 return 一个空结果,而你从中看不到任何东西。正如我提到的,我不熟悉 React Native,但我猜如果你也在联系人块中执行 await,它会起作用。