728x90
반응형
https://aboutreact.com/react-native-android-permission/
var that = this;
//Checking for the permission just after component loaded
async function requestCameraPermission() {
//Calling the permission function
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.CAMERA,
{
title: 'AndoridPermissionExample App Camera Permission',
message: 'AndoridPermissionExample App needs access to your camera ',
}
);
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
that.proceed();
} else {
alert('CAMERA Permission Denied.');
}
}
if (Platform.OS === 'android') {
requestCameraPermission();
} else {
this.proceed();
}
다중 요청
import {
PermissionsAndroid
} from 'react-native';
async requestPermission() {
if (Platform.OS === "android") {
await PermissionsAndroid.requestMultiple([
PermissionsAndroid.PERMISSIONS.CAMERA,
PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,
PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE,
]).then((result)=>{
if (result['android.permission.CAMERA']
&& result['android.permission.WRITE_EXTERNAL_STORAGE']
&& result['android.permission.READ_EXTERNAL_STORAGE']
=== 'granted') {
console.log("모든 권한 획득");
} else{
console.log("권한거절");
}
})
}else{
}
}
//-----------------------------------------------------------------------------------------------------
ble 통신 관련 퍼미션 요청
async function reqPer() {
try {
const granted = await PermissionsAndroid.requestMultiple([
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
PermissionsAndroid.PERMISSIONS.BLUETOOTH_SCAN,
PermissionsAndroid.PERMISSIONS.BLUETOOTH_CONNECT,
PermissionsAndroid.PERMISSIONS.BLUETOOTH_ADVERTISE
]).then((result) => {
if (result['android.permission.ACCESS_FINE_LOCATION'] &&
result['android.permission.BLUETOOTH_SCAN'] &&
result['android.permission.BLUETOOTH_CONNECT'] &&
result['android.permission.BLUETOOTH_ADVERTISE'] === 'granted') {
console.log("모든 권한 획득")
} else {
console.log("거절된 권한있음")
}
})
console.log("granted : ", granted)
/*
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
console.log("You can use the location");
return true;
} else {
console.log("location permission denied");
return false;
} */
} catch (err) {
console.warn(err)
}
}
<uses-permission
android:name="android.permission.BLUETOOTH"
android:maxSdkVersion="30" />
<uses-permission
android:name="android.permission.BLUETOOTH_ADMIN"
android:maxSdkVersion="30" />
<!-- API 31+ -->
<!-- 이미 페어링이된 기기 연결 -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<!-- 주변 기기 검색 -->
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<!-- 현재 기기를 다른 기기에서 검색이 가능 하도록 -->
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
https://reactnative.dev/docs/permissionsandroid#requestmultiple
728x90
반응형
'React Native' 카테고리의 다른 글
React native 키보드 내리기 (0) | 2020.01.16 |
---|---|
React native 지오로케이션 GeoLocation (0) | 2020.01.16 |
TextInput 비밀번호 (0) | 2020.01.15 |
리엑트 네이티브 SwitchNavigator 사용 하기 (0) | 2020.01.15 |
4. 여러개 StyleSheet 적용하는 방법 (0) | 2020.01.08 |