Как разрешить доступ к реагирующим камерам после первого нажатия кнопки «Не разрешать»? - PullRequest
0 голосов
/ 16 января 2019

Сначала, когда вы запускаете приложение в первый раз и заходите в камеру, оно запускает модальное разрешение на Android или IOS с опциями не разрешать и не разрешать.

Используемый пакет реагирует-native-камера.У него есть свойство 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})
    }
  };
}

Ответы [ 2 ]

0 голосов
/ 16 января 2019

есть обходной путь для Android, вы используете этот API , и в вашей кнопке notAuthorizedView onPress вы проверяете, авторизована ли камера, если нет, вы запрашиваете ее вручную. Однако вам нужно добавить метод, чтобы пользователь не спамил спам, потому что он покажет опцию «больше не спрашивать», если пользователь нажмет, что вам нужно будет перенаправить их в настройки и показать тост с андройсом. давая им возможность включить камеру;)

0 голосов
/ 16 января 2019

Короткий ответ, который вы не можете получить; приложения должны предлагать пользователю изменить настройку и предоставить кнопку, которая перенаправляет на настройки приложения.

Вы можете сделать это так:

Linking.openURL('app-settings:')
...