在使用调用摄像头拍照的时候,会遇到用户关闭摄像头权限,这时候要是没有判断,app很大概率会崩溃,本文是根据使用第三方‘react-native-image-crop-picker’和‘react-native-camera’的时候,判断权限的demo,有需要的朋友可以参考。
1、导入组件
import ImagePicker from 'react-native-image-crop-picker';//相机、相册
import Camera from 'react-native-camera';
并加入Alert作提示。
2、安卓->文件设置
在 AndroidManifest.xml文件里面:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myapp"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="23" />
....
3、在要调用摄像头的地方加入检测:
// 从相机中选择
if(Platform.OS === 'android'){
PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.CAMERA)
.then(res => {
if(res !== 'granted') {
Alert.alert('相机权限没打开', '请在手机的“设置”选项中,允许访问您的摄像头和麦克风')
}
else this.openTheCamera();
});
} else {
if(Camera){
Camera.checkDeviceAuthorizationStatus()
.then(access => {
if(!access) {
Alert.alert('相机权限没打开', '请在iPhone的“设置-隐私”选项中,允许访问您的摄像头和麦克风')
}
else this.openTheCamera();
});
}
}
此处checkDeviceAuthorizationStatus 可以判断音频和摄像头,如果要单独判断,可以使用
iOS Camera.checkVideoAuthorizationStatus(): Promise
iOS Camera.checkAudioAuthorizationStatus(): Promise
网友评论