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()
static check(permission: Permission): Promise<boolean>;
지정된 권한이 부여되었는지 여부를 나타내는 불리언 값으로 해결되는 Promise를 반환한다.
매개변수:
이름 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
permission | string | 예 | 확인할 권한을 지정한다. |
request()
static request(
permission: Permission,
rationale?: Rationale,
): Promise<PermissionStatus>;
사용자에게 특정 권한을 허용하도록 요청하고, 사용자가 요청을 허용했는지, 거부했는지, 또는 다시 묻지 않기로 선택했는지를 나타내는 문자열 값으로 이행되는 Promise를 반환한다.
rationale
이 제공된 경우, 이 함수는 OS와 통신하여 권한이 필요한 이유를 설명하는 대화 상자를 표시할 필요가 있는지 확인한 후(https://developer.android.com/training/permissions/requesting.html#explain), 시스템 권한 요청 대화 상자를 표시한다.
매개변수:
이름 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
permission | string | 예 | 요청할 권한. |
rationale | object | 아니오 | 아래 rationale 참조. |
Rationale:
이름 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
title | string | 예 | 대화 상자의 제목. |
message | string | 예 | 대화 상자의 메시지. |
buttonPositive | string | 예 | 긍정 버튼의 텍스트. |
buttonNegative | string | 아니오 | 부정 버튼의 텍스트. |
buttonNeutral | string | 아니오 | 중립 버튼의 텍스트. |
requestMultiple()
static requestMultiple(
permissions: Permission[],
): Promise<{[key in Permission]: PermissionStatus}>;
사용자에게 여러 권한을 동시에 요청하는 다이얼로그를 표시한다. 이 함수는 Promise를 반환하며, 각 권한에 대한 사용자의 응답을 객체 형태로 제공한다. 객체의 키는 권한 이름이고, 값은 사용자가 권한을 허용했는지, 거부했는지, 또는 다시 묻지 않기로 선택했는지를 나타내는 문자열이다.
매개변수:
이름 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
permissions | 배열 | 예 | 요청할 권한 목록을 담은 배열. |