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}>;
사용자에게 여러 권한을 동시에 요청하고, 각 권한에 대한 사용자의 응답을 객체로 반환한다. 반환된 객체는 권한을 키로 가지며, 값은 사용자가 요청을 허용했는지, 거부했는지, 또는 다시 묻지 않기를 선택했는지를 나타내는 문자열이다. (결과 문자열은 위에서 확인할 수 있다.)
매개변수:
이름 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
permissions | 배열 | 예 | 요청할 권한들의 배열. |