Сначала, когда вы запускаете приложение в первый раз и заходите в камеру, оно запускает модальное разрешение на 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})
}
};
}