美文网首页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

相关文章

网友评论

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

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

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