1. Runtime Permission

안드로이드 버전 6.0 즉, MarshMellow 이전 버전에서는 사용자가 앱을 설치하는 시점에 한번만 동의를 받으면 그 이후에는 문제없이 해당 권한들을 사용할 수 있었다. 즉, 앱을 설치할 때 필요한 권한들에 대한 동의를 얻는 것이다.

사용자가 해당 권한을 이 앱에서 사용하는 것에 대해서 꺼림직해 하거나 마음에 들지 않는다면 앱을 사용하지 않는 방법이 유일하다. 그로 인해 수많은 피싱앱이 생겼고, 일부 앱에서는 과도한 권한을 요구하는 경우도 있었다.

하지만 안드로이드 6.0 마시멜로우 버전 이상에서는 권한 허용 여부를 묻지 않는다. 앱에서 해당 권한이 필요할때마다 사용자로부터 권한을 허가받도록 변경되었다. 또한, 사용자가 권한을 허가했더라도 사용자는 설정화면(설정 > 애플리케이션 > 앱이름 > 권한)을 통해 언제든지 권한을 허용/거부할 수 있다.

그래서 우리는 해당 권한이 실행될 때마다 권한을 사용할 수 있는지 확인해야 하고, 권한을 사용할 수 없는 경우에는 사용자로부터 권한을 허가받는 기능을 추가해주어야 한다.

2. 모든 권한을 다 체크해야 하는가?

그렇다면 모든 권한을 다 체크해야 할까? 아니다.
우리가 AndroidManifest.xml에서 선언한 모든 권한에 대해서 허가를 받아올 필요는 없다. 구글이 정의한 Normal Permission과 Dangerous Permission 중 Dangerous Permission에 대해서만 권한을 체크해주면 된다.

Normal Permission and Dangerous Permission

Normal Permission과 Dangerous Permission에 대한 내용은 위의 링크를 참고하면 된다.

그러면 우리는 Dangerous Permission에 대해서만 체크하고 허가를 받으면 된다. 아래는 Dangerous Permission과 permissions groups 표이다. 이외의 Permission들은 체크하지 않아도 된다.

참고