React Native

ReactNative 에서 android 퍼미션 요청 하기

Machine_웅 2020. 1. 16. 16:47
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

 

PermissionsAndroid · React Native

Project with Native Code Required

reactnative.dev

 

728x90
반응형