Hello, Android!
안드로이드 권한 요청 본문
과거 안드로이드 앱에서 연락처, 위치정보등 각종 권한을 필요로 하는 경우
앱 설치시 사용자에게 필요 권한 목록을 보여주고 설치하는게 끝이었다
하지만 안드로이드 6.0 마시멜로 (SDK 23)이상의 경우 권한을 취득하는 방법이 변경되었다
앱 실행중 특정 권한이 필요하면 사용자에게 해당 권한이 필요한 이유를 설명하고 권한 접근 허락을 받아야한다
최초 실행시 유저가 해당 권한 접근을 허용했다고 하더라도 언제든 권한을 취소할수 있기 때문에
매번 권한이 있는지 체크를 해야한다
그나마 다행인? 것은 모든 권한에 대하여 체크를 하는것이 아닌, 특정 위험 권한에 대해서 체크를 해야한다
(https://developer.android.com/guide/topics/security/permissions.html?hl=ko#normal-dangerous)
이런 위험 권한에 접근이 필요하다면, 안드로이드에서 제공하는 기능들을 적절히 사용하여
사용자에게 권한을 요청해야한다
간단하게 흐름을 설명하면
1. 해당 권한에 허용되어있는지 확인한다
2. 사용자가 이전에 요청을 거부한 경우를 체크하여 적절한 대응을 한다
3. 권한이 없는 경우 권한을 요청한다
4. 요청 결과를 받아 허용, 거절 각각의 상황에 맞는 대응을 한다
- ContextCompat.checkSelfPermission()은 특정 context에서 권한이 있는지 체크한다
- shouldShowRequestPermissionRationale() 함수를 사용하여 이전에 사용자가 권한을 거부하였는지 체크를 한다
이전에 거부를 하였으면 true를 반환한다
만약 사용자가 거부하고 다시 묻지않음 옵션을 선택하였거나, 기기 정책상 해당 권한을 금지하는경우 false를 반환한다
- ActivityCompat.requestPermissions() 액티비티, 권한, 권한 코드를 매개변수로 넘겨 해당 권한을 요청한다
권한 코드는 여러개의 권한을 요청하는 경우 구분하기 위해 임의로 지정하는 코드이다
- onRequestPermissionsResult() 함수는 사용자에게 권한 요청 응답을 전달하며 자동으로 호출되는 함수이다
더욱 자세한 내용은 안드로이드 공식 문서를 참조하자
(https://developer.android.com/training/permissions/requesting?hl=ko)
'Android' 카테고리의 다른 글
테드 퍼미션을 이용한 권한 획득 (0) | 2020.05.31 |
---|---|
Retrofit2를 이용한 HTTP통신 (0) | 2020.05.23 |
안드로이드 shared preferences (0) | 2020.05.17 |
05. 인텐트, 뷰 in kotlin (0) | 2019.03.11 |
04. 뷰 (0) | 2019.03.10 |