[Android] 6(1). 권한과 권한의 유형

2 minute read


권한과 권한의 유형


권한 명세와 기능 명세


권한 명세

  • 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 /> 태그로 명세하고 소스 코드도 추가적으로 작성해야 합니다.
    • 서명 권한은 권한을 정의하는 앱과 동일한 인증서로 서명이 된 경우 시스템이 권한을 자동으로 부여합니다.

Categories:

Updated:

Leave a comment