Android

[android] Android 6.0 권한 관리

장일규 2023. 7. 9. 19:57

회사에서  하이브리드 앱 프로젝트를 진행하던 중

안드로이드에서 권한 체크는 언제 도입이 되었는지 궁금해 졌다.

 

먼저 

2015년 10월 5일에 출시 된 안드로이드 6.0 (Marshmallow) API 23부터  권한 체크가 지원이 되었다.

 

안드로이드 6.0 이전 버전에서는

앱을 설치할 때 사용자에게 모든 권한 동의를 한번에 받았다.

 

안드로이드 6.0 미만

 

사용자들은 전체 접근권한에 동의를 해야 앱 다운로드 및 설치가 가능했다.

 

앱이 필요해서 설치했지만 앱에서 가져가는 권한들이 싫다면 앱을 사용하지 않는 방법밖에 없었다.

 

우리 개발자 입장에서는

AndroidManifest.xml에 필요한 권한들을 선언하기만하면

설치 시점에 한번 동의를 받으면 그 이후 해당 권한들을 사용할 수 있었다.

 

위에 권한 방식은 개인정보 무단 수집 등 악용 사례로 이뤄졌다.

 

https://n.news.naver.com/mnews/article/008/0003521941?sid=105

 

'손전등 앱'인데 사진첩·연락처 정보까지 왜 보려하지?

[머니투데이 진달래 기자] [방통위 '스마트폰 앱 개인정보보호 가이드라인' 발표 왜 했나 봤더니…과도한 정보접근권한 설정 '우려']#스마트폰 카메라 플래시를 ...

n.news.naver.com

 

Android 6.0부터는 Google이 도입한

"Runtime Permission"

 

2015년 10월 5일에 출시 된 안드로이드 6.0 (Marshmallow) API 23부터 지원이 되었다.

 

Android 6.0부터는 앱 설치 시 사용자의 권한 허용 여부를 받는 것이 아닌,

앱에서 권한이 필요 할 때 사용자에게 권한을 받도록 변경이 되었다.

 

사용자가 권한을 허락하였더라도, 앱 정보에서 권한을 거부할 수 도 있다.

즉, 개발자가 권한을 관리하는 것이 아닌, 사용자가 모든 권한을 관리할 수 있게 되었다.

 

Normal Permission과 Dangerous Permission

 Android 6.0 이전 버전에서는 위에서 언급 했듯이 걍 AndroidManifest.xml에 선언만 해서 사용이 가능했음

하지만 6.0이후 부터는 Normal Permission과 Dangerous Permission으로 나뉘어서 관리가 됨

 

 

Normal Permission

AndroidManifest.xml에 속성을 추가하여 권한 체크 없이 사용 할 수 있는 일반 권한이다.

 

ACCESS_NETWORK_STATE: 네트워크 상태에 대한 접근

INTERNET: 인터넷에 접속할 수 있는 권한

VIBRATE: 기기 진동 사용

 

위에 기능들은 일반적인 앱 기능을 수행하기 위해 필요한 권한이다. 

사용자의 개인 민감 정보에 직접적으로 접근하지는 않는다.

 

https://developer.android.com/reference/android/Manifest.permission#normal-permissions

 

 

 

Dangerous Permission

사용자의 개인 정보에는 직접적으로 접근하는 위험 권한은 사용자가 권한을 허락해야 앱에 Next Step이 가능함

 

CAMERA: 카메라 사용 권한 

READ_CONTACTS: 주소록 읽기 권한 

WRITE_CONTACTS: 주소록 쓰기 권한

 

https://developer.android.com/reference/android/Manifest.permission#dangerous-permissions

 

Manifest.permission  |  Android Developers

 

developer.android.com