首页 > 解决方案 > React-Native-Expo 在 iOS 中再次询问相机和相机胶卷权限?

问题描述

如果用户第一次拒绝了权限,如何再次询问他们?

我认为这应该有效,但事实并非如此。我不知道为什么?我发现它只在iOS上。


(async () => {
  if (Platform.OS !== 'web') {
    console.log('Ask Permission')
    const libraryPermission = await ImagePicker.requestCameraRollPermissionsAsync();
    const cameraPermission = await ImagePicker.requestCameraPermissionsAsync();

    console.log("libraryPermission", libraryPermission)
    console.log("cameraPermission", cameraPermission)
    if (libraryPermission.status !== 'granted') {
      alert('Sorry, we need camera roll permissions to make this work!');
    }
    if (cameraPermission.status !== 'granted') {
      alert('Sorry, we need camera permissions to make this work!');
    }
  }
})();

export const takePhoto = async () => {
  const getCameraPermission = await ImagePicker.getCameraPermissionsAsync();
  console.log(getCameraPermission);
  if (!getCameraPermission.granted) {
    if (Platform.OS !== 'web') {
      const cameraPermission = await ImagePicker.requestCameraPermissionsAsync();
      if (cameraPermission.status !== 'granted') {
        alert('Sorry, we need camera roll permissions to make this work!');
      }
    }
  }
  const photo = await ImagePicker.launchCameraAsync({
    mediaTypes: ImagePicker.MediaTypeOptions.Images,
    allowsEditing: true,
    // aspect: [4, 3],
    quality: 1,
  });
  if (!photo.cancelled) {
    return photo;
  }
}

如果单击按钮 takePhoto 我只得到这个:

cameraPermission Object {
  "canAskAgain": false,
  "expires": "never",
  "granted": false,
  "status": "denied",
}

有没有办法一次请求所有许可?这样用户就不会为每个权限获得一个弹出窗口。

多谢。

标签: react-nativepermissionscameraexpo

解决方案


推荐阅读