Skip to main content

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}>;

사용자에게 여러 권한을 동시에 요청하는 다이얼로그를 표시한다. 이 함수는 Promise를 반환하며, 각 권한에 대한 사용자의 응답을 객체 형태로 제공한다. 객체의 키는 권한 이름이고, 값은 사용자가 권한을 허용했는지, 거부했는지, 또는 다시 묻지 않기로 선택했는지를 나타내는 문자열이다.

매개변수:

이름타입필수 여부설명
permissions배열요청할 권한 목록을 담은 배열.