[Android] 6(1). 권한과 권한의 유형
권한과 권한의 유형
권한 명세와 기능 명세
권한 명세
- AndroidManifest.xml 파일에서 명세
- < uses-permission /> 태그를 사용
👍 예시
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
기능 명세
- AndroidManifest.xml 파일에 따로 추가하지 않아도 해당 기능을 사용할 때 시스템이 자동으로 부여
- 추가하고 싶다면 < uses-feature /> 태그를 사용
- 기능 사용 여부로 플레이 스토어 검색 조건이 결정
👍 예시
<uses-feature android: name="android.hardware.camera" android: required="true" />
required를 true로 설정하면 해당 기능이 없는 스마트폰에서는 구글 스토어에서 해당 앱이 보이지 않습니다.
권한의 보호 수준
권한은 일반 권한, 워험 권한, 서명 권한 세 가지의 보호 수준으로 나뉩니다.
일반 권한
일반 권한으로 AndroidManifest.xml 에 명세하면 설치 시 사용자에게 권한 승인을 묻는 팝업창을 보여줍니다.
- 일반 권한의 종류
권한 | 설명 |
---|---|
ACCESS_NETWORK_STATE | 네트워크 연결 상태 확인 |
ACCESS_WIFI_STATE | 와이파이 상태 확인 |
BLUTOOTH | 블루투스 상태 확인 |
INTERNET | 네트워크 및 인터넷 사용 |
NFC | 기가 간 근거리 통신 사용 |
SET_ALARM | 알람 설정 |
VIBRATE | 진동 설정 |
👍 예시
<uses-permission android:name="android.permission.BLUETOOTH"/>
위험 권한
- 위험 권한은 앱이 사용자의 개인정보와 관련된 데이터나 기능을 액세스하거나 다른 앱 및 기기의 작동에 영향을 줄 우려가 있는 권한입니다.
- 위험 권한은 Gradle Scripts 디렉터리에 있는 build.gradle (Module) 파일의 targetSdkVersion이 23 이상(안드로이드 6.0 이상)이어야 정상적으로 동작합니다.
- 위험 권한을 사용하려면 설정 파일인 AndroidManifest.xml 에 권한을 명세하고, 부가적으로 소스 코드에 권한 요청 및 로직을 작성해야 합니다.
- AndroidManifest.xml 파일에서는 일반 권한과 동일하게 < uses-permission /> 태그를 이용하여 권한을 명세합니다.
소스 코드에 위험 권한을 작성하는 방법은 다음 포스팅인 6(2). 위험한 권한 처리하기에서 살펴보겠습니다.
- 위험 권한의 종류
권한 그룹 | 권한 | 설명 |
---|---|---|
CALENDER | READ_CALENDER | 캘린더 읽기 |
WRITE_CALENDER | 캘린더 쓰기 | |
CAMERA | CAMERA | 카메라 |
CONTACTS | READ_CONTACTS | 주소록 읽기 |
WRITE_CANTACTS | 주소록 쓰기 | |
GET_ACCOUNTS | 계정 정보 가져오기 | |
LOCATION | ACCESS_FINE_LOCATION | 위치 정보 사용 |
ACCESS_COARSE_LOCATION | 위치 정보 사용 | |
MICROPHONE | RECORD_AUDIO | 마이크 녹음 |
PHONE | READ_PHONE_STATE | 폰 상태 정보 |
READ_PHONE_NUMBERS | 전화번호 가져오기 | |
CALL_PHONE | 발신하기 | |
ANSWER_PHONE_CALLS | 응답하기 | |
READ_CALL_LOG | 전화 로그 읽기 | |
WRITE_CALL_LOG | 전화 로그 쓰기 | |
ADD_VOICEMAIL | 음성메일 추가 | |
USE_SIP | SIP 사용 | |
PROCESS_OUTGOING_CALLS | 통화 관련 Broadcast 수신 | |
SENSORS | BODY_SENSORS | 바디센서 |
SMS | SEND_SMS | SMS 보내기 |
RECEIVE_SMS | SMS 받기 | |
READ_SMS | SMS 읽기 | |
RECEIVE_WAP_PUSH | WAP 수신 | |
RECEIVE_MMS | MMS 받기 | |
STORAGE | READ_EXTERNAL_STORAGE | 안드로이드 공용 저장소 읽기 |
WRITE_EXTERNAL_STORAGE | 안드로이드 공용 저장소 쓰기 |
서명 권한
서명 권한은 사용하려는 앱이 권한을 정의하는 앱과 동일한 인증서로 서명된 경우 시스템이 권한을 자동으로 부여합니다. 간단하게 설명하면 구글에서 만든 앱은 권한이 자동으로 부여되는 것과 같습니다.
권한의 보호 수준
각각의 권한은 그룹 단위로 구성됩니다. 권한에 대한 요청은 그룹 단위로 처리되며 동일한 권한 그룹 내에서 다른 권한이 이미 부여된 경우 시스템은 사용자에게 다시 물어보지 않고 즉시 권한을 부여합니다.
권한 그룹으로 묶인 권한은 모두 한 번에 처리한다고 이해하면 편합니다.
정리
-
명세에는 권한 명세와 기능 명세가 있습니다.
- 권한 명세는 AndroidManifest.xml 파일에 명세를 해주어야 하고, 위험 권한의 경우 소스 코드도 작성해야 합니다. < uses-permission /> 태그를 사용합니다.
- 기능 명세는 해당 기능을 사용할 때 시스템이 자동으로 부여해줍니다. 기능을 추가하고 싶다면 마찬가지로 AndroidManifest.xml 파일에 < uses-feature /> 태그를 사용합니다.
-
권한에는 일반 권한, 위험 권한, 서명 권한이 있습니다.
- 일반 권한은 < uses-permission /> 태그를 이용해 명세합니다.
- 위험 권한은 < uses-permission /> 태그로 명세하고 소스 코드도 추가적으로 작성해야 합니다.
- 서명 권한은 권한을 정의하는 앱과 동일한 인증서로 서명이 된 경우 시스템이 권한을 자동으로 부여합니다.
Leave a comment