Skip to main content
Version: Next

PermissionsAndroid

PermissionsAndroid는 Android M의 새로운 권한 모델에 접근할 수 있게 해준다. 이른바 "일반" 권한은 AndroidManifest.xml에 명시되어 있다면 애플리케이션 설치 시 기본적으로 허용된다. 하지만 "위험" 권한은 다이얼로그를 통해 사용자에게 요청해야 한다. 이러한 권한을 위해 이 모듈을 사용한다.

SDK 버전 23 이전 기기에서는 매니페스트에 권한이 명시되어 있다면 자동으로 허용된다. 따라서 check는 항상 true를 반환하고, request는 항상 PermissionsAndroid.RESULTS.GRANTED로 해결된다.

사용자가 이전에 권한을 거부한 경우, OS는 해당 권한이 왜 필요한지 설명하는 근거를 보여줄 것을 권장한다. 선택적 rationale 인자는 필요한 경우에만 다이얼로그를 표시한다. 그렇지 않으면 일반 권한 요청 다이얼로그가 나타난다.

사용자에게 권한 요청이 필요한 권한 목록​

PermissionsAndroid.PERMISSIONS 아래에 상수로 제공되는 권한 목록은 다음과 같다:

  • READ_CALENDAR: 'android.permission.READ_CALENDAR'
  • WRITE_CALENDAR: 'android.permission.WRITE_CALENDAR'
  • CAMERA: 'android.permission.CAMERA'
  • READ_CONTACTS: 'android.permission.READ_CONTACTS'
  • WRITE_CONTACTS: 'android.permission.WRITE_CONTACTS'
  • GET_ACCOUNTS: 'android.permission.GET_ACCOUNTS'
  • ACCESS_FINE_LOCATION: 'android.permission.ACCESS_FINE_LOCATION'
  • ACCESS_COARSE_LOCATION: 'android.permission.ACCESS_COARSE_LOCATION'
  • ACCESS_BACKGROUND_LOCATION: 'android.permission.ACCESS_BACKGROUND_LOCATION'
  • RECORD_AUDIO: 'android.permission.RECORD_AUDIO'
  • READ_PHONE_STATE: 'android.permission.READ_PHONE_STATE'
  • CALL_PHONE: 'android.permission.CALL_PHONE'
  • READ_CALL_LOG: 'android.permission.READ_CALL_LOG'
  • WRITE_CALL_LOG: 'android.permission.WRITE_CALL_LOG'
  • ADD_VOICEMAIL: 'com.android.voicemail.permission.ADD_VOICEMAIL'
  • USE_SIP: 'android.permission.USE_SIP'
  • PROCESS_OUTGOING_CALLS: 'android.permission.PROCESS_OUTGOING_CALLS'
  • BODY_SENSORS: 'android.permission.BODY_SENSORS'
  • SEND_SMS: 'android.permission.SEND_SMS'
  • RECEIVE_SMS: 'android.permission.RECEIVE_SMS'
  • READ_SMS: 'android.permission.READ_SMS'
  • RECEIVE_WAP_PUSH: 'android.permission.RECEIVE_WAP_PUSH'
  • RECEIVE_MMS: 'android.permission.RECEIVE_MMS'
  • READ_EXTERNAL_STORAGE: 'android.permission.READ_EXTERNAL_STORAGE'
  • WRITE_EXTERNAL_STORAGE: 'android.permission.WRITE_EXTERNAL_STORAGE'
  • BLUETOOTH_CONNECT: 'android.permission.BLUETOOTH_CONNECT'
  • BLUETOOTH_SCAN: 'android.permission.BLUETOOTH_SCAN'
  • BLUETOOTH_ADVERTISE: 'android.permission.BLUETOOTH_ADVERTISE'
  • ACCESS_MEDIA_LOCATION: 'android.permission.ACCESS_MEDIA_LOCATION'
  • ACCEPT_HANDOVER: 'android.permission.ACCEPT_HANDOVER'
  • ACTIVITY_RECOGNITION: 'android.permission.ACTIVITY_RECOGNITION'
  • ANSWER_PHONE_CALLS: 'android.permission.ANSWER_PHONE_CALLS'
  • READ_PHONE_NUMBERS: 'android.permission.READ_PHONE_NUMBERS'
  • UWB_RANGING: 'android.permission.UWB_RANGING'
  • BODY_SENSORS_BACKGROUND: 'android.permission.BODY_SENSORS_BACKGROUND'
  • READ_MEDIA_IMAGES: 'android.permission.READ_MEDIA_IMAGES'
  • READ_MEDIA_VIDEO: 'android.permission.READ_MEDIA_VIDEO'
  • READ_MEDIA_AUDIO: 'android.permission.READ_MEDIA_AUDIO'
  • POST_NOTIFICATIONS: 'android.permission.POST_NOTIFICATIONS'
  • NEARBY_WIFI_DEVICES: 'android.permission.NEARBY_WIFI_DEVICES'
  • READ_VOICEMAIL: 'com.android.voicemail.permission.READ_VOICEMAIL'
  • WRITE_VOICEMAIL: 'com.android.voicemail.permission.WRITE_VOICEMAIL'

PermissionsAndroid.RESULTS 아래에 상수로 제공되는 결과 문자열은 다음과 같다:

  • GRANTED: 'granted'
  • DENIED: 'denied'
  • NEVER_ASK_AGAIN: 'never_ask_again'

참고 자료

메서드​

check()​

tsx
static check(permission: Permission): Promise<boolean>;

지정된 권한이 부여되었는지 여부를 나타내는 불리언 값으로 이행되는 Promise를 반환한다.

매개변수:

이름타입필수 여부설명
permissionstring예확인하려는 권한을 지정한다.

request()​

tsx
static request(
permission: Permission,
rationale?: Rationale,
): Promise<PermissionStatus>;

사용자에게 특정 권한을 허용하도록 요청하고, 사용자가 요청을 허용했는지 거부했는지, 또는 다시 묻지 않기로 선택했는지를 나타내는 문자열 값(위의 결과 문자열 참조)으로 이행되는 Promise를 반환한다.

rationale이 제공되면, 이 함수는 OS와 통신해 해당 권한이 왜 필요한지 설명하는 다이얼로그를 표시할 필요가 있는지 확인한 후(https://developer.android.com/training/permissions/requesting.html#explain), 시스템 권한 요청 다이얼로그를 표시한다.

매개변수:

이름타입필수 여부설명
permissionstring예요청할 권한.
rationaleobject아니오아래 rationale 참조.

Rationale:

이름타입필수 여부설명
titlestring예다이얼로그 제목.
messagestring예다이얼로그 메시지.
buttonPositivestring예긍정 버튼 텍스트.
buttonNegativestring아니오부정 버튼 텍스트.
buttonNeutralstring아니오중립 버튼 텍스트.

requestMultiple()​

tsx
static requestMultiple(
permissions: Permission[],
): Promise<{[key in Permission]: PermissionStatus}>;

사용자에게 여러 권한을 동시에 요청하고, 각 권한에 대한 사용자의 응답을 객체로 반환한다. 반환된 객체는 권한을 키로 가지며, 값은 사용자가 요청을 허용했는지, 거부했는지, 또는 다시 묻지 않기를 선택했는지를 나타내는 문자열이다. (결과 문자열은 위에서 확인할 수 있다.)

매개변수:

이름타입필수 여부설명
permissions배열예요청할 권한들의 배열.