首先按下不允许后如何授予对react-native-camera的访问权限?

Car*_*nes 5 android ios reactjs react-native react-native-camera

首先,当您第一次运行应用程序并转到相机时,它会在 android 或 ios 上启动权限模式,并带有不允许和允许选项。

使用的包是react-native-camera。它有一个名为 notAuthorizedView 的属性,您可以返回任何您想要的视图。我想要做的是启用相机或在不允许相机时出现的 notAuthorizedView 中授予对相机的访问权限。

export default class MyCamera extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            uri:''
        };
    }

      render() {
        return (
          <View style={styles.container}>
        <RNCamera
          ref={ref => {
            this.camera = ref;
          }}
          style={styles.preview}
          type={RNCamera.Constants.Type.back}
          flashMode={RNCamera.Constants.FlashMode.on}
          notAuthorizedView={
            <View>
              <Text>YOU ARE NOT AUTHORIZED TO USE THE CAMERA</Text>
              <Button onPress={()=>{Alert.alert('SET CAMERA STATUS TO READY')}}/>
            </View>
          }
          permissionDialogTitle={'Permission to use camera'}
          permissionDialogMessage={'We need your permission to use your camera phone'}
          onGoogleVisionBarcodesDetected={({ barcodes }) => {
            console.log(barcodes);
          }}
        />
        <View style={{ flex: 0, flexDirection: 'row', justifyContent: 'center' }}>
          <TouchableOpacity onPress={this.takePicture.bind(this)} style={styles.capture}>
            <Text style={{ fontSize: 14 }}> SNAP </Text>
          </TouchableOpacity>
        </View>
      </View>
        );
      }


     goToConcern = () => {
        this.props.navigation.navigate('Concern', {uriPhoto: this.state.uri})
     };

     

  takePicture = async function() {
    if (this.camera) {
      const options = { quality: 0.5, base64: true };
      const data = await this.camera.takePictureAsync(options)
      console.log(data.uri);
      console.log(data);
      this.setState({uri:data.uri})
    }
  };
}
Run Code Online (Sandbox Code Playgroud)

Mos*_*bah 5

简而言之,您不能,应用程序必须做的是邀请用户更改设置并提供重定向到应用程序设置的按钮。

你可以这样做:

Linking.openURL('app-settings:')
Run Code Online (Sandbox Code Playgroud)

  • 我用“Linking.openSettings()”代替。https://reactnative.dev/docs/linking#opensettings (2认同)