작성한 부스트코스 후기입니다.
여러분들의 성원에 더 노력하는 부스트코스가 되겠습니다.
감사합니다.
******************************************
1)링크: https://blog.naver.com/zhfptm12/221814397563
2)작성날짜: 20/02/18
앞에서 브로드캐스트 수신자(BroadcastReceiver)로 SMS 문자 수신 기능을 만들려면 RECEIVE_SMS 권한이 필요하다는 것을 알게 되었습니다.
그런데 이 권한은 위험 권한으로 분류됩니다.
위험 권한이라는 것은 마시멜로(API 23) 버전부터 적용된 것으로, 사용자가 좀 더 확실하고 엄격한 방법으로 앱에 권한을 부여하도록 만들어진 것입니다.
위험 권한이 무엇이고 어떻게 하면 사용자에게 권한 부여를 요청할 수 있는지 알아봅시다.
위험 권한
마시멜로 버전부터는 권한을 일반 권한(Normal Permission)과 위험 권한(Dangerous Permission)으로 나누었습니다.
그 이전에는 앱을 설치하는 시점에서만 권한을 부여할 것인지 물어보았는데 사용자가 아무런 생각 없이 앱을 설치하는 경우가 많아 앱에서 아무리 많은 권한을 요구해도 그냥 승인되는 경우가 많았기 때문입니다.
위험 권한은 앱이 실행된 후에 사용자에게 권한 허용을 요청해야 합니다.
인터넷을 사용할 때 부여하는 INTERNET 권한은 일반 권한이므로 앱을 설치할 때만 승인하면 됩니다.
위험 권한으로 분류되는 RECEIVE_SMS의 경우에는 설치 시에 부여한 권한 외에도 실행 시에 사용자에게 권한을 부여할 것인지 물어보아야 합니다.
만약 사용자가 권한을 부여하지 않으면 해당 기능은 동작하지 않습니다.
위험 권한 부여 방법
대부분의 앱은 직접 코드에서 앱 실행 시에 위험 권한을 부여하는 것이 필요합니다.
먼저 매니페스트 파일(AndroidManifest.xml)에 권한을 추가한 후 코드에서 해당 위험 권한을 부여하도록 만들어줍니다.
필요한 시점에 아래와 같은 코드를 적용하면 사용자가 볼 수 있도록 새로운 권한 부여 요청 대화상자가 뜨게 됩니다.
<생각해보기>
1. 하나의 위험 권한에 대해서 매니페스트 파일(AndroidManifest.xml)에만 권한을 추가하고 코드에서는 위험 권한 부여 요청을 하지 않았을 경우 앱을 실행하면 어떤 현상이 벌어질까요?
- 만약 sdk 버전이 23 이상이라면 해당 앱은 정상적으로 작동하지 않을 것 같습니다.
2. SD 카드에 파일을 쓰는 기능은 위험 권한으로 분류된 두 가지 권한을 요구합니다. 그러면 이 기능을 사용하기 위해 어떤 과정을 거쳐야 할까요?
- 권한이 있는지 확인 -> 있다면 끝, 없다면 권한 요청 -> 수락하면 끝, 거절한다면 경고문?
위와 같은 과정을 거치면 될 것 같습니다.
[출처] [부스트 코스] 안드로이드 - 위험 권한 주기 03주 차|작성자 zhfptm12