在使用調(diào)用攝像頭拍照的時(shí)候,會(huì)遇到用戶關(guān)閉攝像頭權(quán)限丈挟,這時(shí)候要是沒有判斷益涧,app很大概率會(huì)崩潰,本文是根據(jù)使用第三方‘react-native-image-crop-picker’和‘react-native-camera’的時(shí)候撵孤,判斷權(quán)限的demo,有需要的朋友可以參考竭望。
1邪码、導(dǎo)入組件
import ImagePicker from 'react-native-image-crop-picker';//相機(jī)、相冊(cè)
import Camera from 'react-native-camera';
并加入Alert作提示市框。
2霞扬、安卓->文件設(shè)置
在 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、在要調(diào)用攝像頭的地方加入檢測(cè):
// 從相機(jī)中選擇
if(Platform.OS === 'android'){
PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.CAMERA)
.then(res => {
if(res !== 'granted') {
Alert.alert('相機(jī)權(quán)限沒打開', '請(qǐng)?jiān)谑謾C(jī)的“設(shè)置”選項(xiàng)中,允許訪問您的攝像頭和麥克風(fēng)')
}
else this.openTheCamera();
});
} else {
if(Camera){
Camera.checkDeviceAuthorizationStatus()
.then(access => {
if(!access) {
Alert.alert('相機(jī)權(quán)限沒打開', '請(qǐng)?jiān)趇Phone的“設(shè)置-隱私”選項(xiàng)中,允許訪問您的攝像頭和麥克風(fēng)')
}
else this.openTheCamera();
});
}
}
此處checkDeviceAuthorizationStatus 可以判斷音頻和攝像頭枫振,如果要單獨(dú)判斷喻圃,可以使用
iOS Camera.checkVideoAuthorizationStatus(): Promise
iOS Camera.checkAudioAuthorizationStatus(): Promise