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배열요청할 권한들의 배열.