美文网首页React Native学习
React Native 检测相机拍照权限

React Native 检测相机拍照权限

作者: 以德扶人 | 来源:发表于2017-11-03 16:54 被阅读282次

    在使用调用摄像头拍照的时候,会遇到用户关闭摄像头权限,这时候要是没有判断,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

    相关文章

      网友评论

      • 我头发不是很卷:android 6.0以下的版本怎么办呢?
        以德扶人:@我头发不是很卷 那这个方法还是有局限性的,当时也没有测那么多哈
        我头发不是很卷:@江湖人称_赫大侠 可惜官网提供的PermissionsAndroid只限定在Android M(也就是6.0)以上版本使用
        以德扶人:我没有试过不同的安卓版本,理论讲组件支持的就可以用了

      本文标题:React Native 检测相机拍照权限

      本文链接:https://www.haomeiwen.com/subject/fsgtmxtx.html