Android Permission 관련하여
앱 사용자와 개발자의 의견차이가 존재합니다.
앱유저 💁♂️ : " 왜 자꾸 권한을 요청하는거지 짜증나 "
개발자 🧑💻 : " 왜 자꾸 권한을 거절하는거지 짜증나 "
자 이제 안드로이드 앱 권한 요청에 대하여 알아봅시다.
먼저 Android Permission 관련하여 직접적인 예시를 보는게 가장 빠르겠죠?
위험한 권한
Android6.0(API 수준 23) 이상을 실행하는 기기에 설치된 경우 위험한 런타임 권한을 요청해야 합니다.
위험한 권한을 선언하지 않거나 앱이 Android5.1(API 수준 22) 이하를 실행하는 기기에 설치된 경우 권한이 자동으로 부여되므로 권한요청 단계를 완료하지 않아도 됩니다.
권한 요청
AndroidX 라이브러리에 포함된 RequestPermission 사용
androidx.activity - 1.2.0 이상
androidx.fragment - 1.3.0 이상
단일 권한 RequestPermission
여러 권한을 동시에 요청 RequestMultiplePermissions
앱에 권한이 부여되었는지 확인 ✔️
위와 같이 ContextCompat.checkSelfPermission()를 사용하여
PERMISSION_GRANTED 또는 PERMISSION_DENIED 값으로 권한 여부를 리턴 받을 수 있습니다.
권한 요청 🔖
권한 요청은 ActivityCompat.requestPermissions()를 이용하여 요청하고
해당 요청한 권한들의 동의 여부 값들은
onRequestPermissionResult() 안으로 수신됩니다.
앱에 권한이 필요한 이유 설명
(권한 재요청)
사용자가 해당 권한을 거부 했을 경우
개발자가 어떻게 대응해야 할까요?
(아래에 설명 드리겠지만 사용자가 두번이상 권한을 거부한 경우 앱에서 권한을 재요청할수 없습니다.)
이 앱을 사용하시려면 권한을 허락해주십시오
하고 정중하게 요청 해야겠죠...
이 상황을 잘 생각해보면
첫 진입시 무조건 권한요청을 하게됩니다.
이때까지는 모든 사용자들이 같은 상황이죠
하지만 BUT
특정 사용자가 권한 거부를 눌렀다면
이후 진입시
'당신이 권한을 거부 하셨었네요
이 권한은 나쁜것이 아니며 이러이러한 기능에 사용되니 다시한번 생각해주세요'
하고 귓속에 속삭여준다면 권한을 허용해주지 않을까요?
이때 필요한 부분이 바로
ActivityCompat.shouldShowRequestPermissionRationale() 입니다.
true 값이 리턴된다면 사용자가 이전에 요청을 거부한 상황이고
false 라면 그 이외 상황들 입니다.
특정 상황에 사용자에게 해당 권한에 대한 알림 또는 설명을 유도하여
권한 승인을 재요청 할 수 있습니다.
권한 거부 처리
Android11(API 수준 30) 부터 사용자가 앱이 기기에 설치된 전체 기간 동안 특정 권한에 관해 거부를 두 번 이상 탭하면 앱에서 그 권한을 다시 요청하는 경우 사용자에게 시스템 권한 대화상자가 표시되지 않습니다. 이러한 사용자의 작업은 '다시 묻지 않음'을 의미합니다.
사용자가 권한 요청을 두 번 이상 거부하면 영구 거부로 간주됩니다.
TedPermission
위에 제가 설명드린 모든 기능들을
박상권 개발자님께서 하나의 라이브러리로 만들어 제공해주고 계십니다!!
참 쉽고 빠르고 정확하게!!!
개발자의 생명은 시간 단축이니까요
또한 TedPermission은
dependencies {
// Normal
implementation 'io.github.ParkSangGwon:tedpermission-normal:x.y.z'
// Coroutine
implementation 'io.github.ParkSangGwon:tedpermission-coroutine:x.y.z'
// RxJava2
implementation 'io.github.ParkSangGwon:tedpermission-rx2:x.y.z'
// RxJava3
implementation 'io.github.ParkSangGwon:tedpermission-rx3:x.y.z'
}
Rx, Coroutine 또는 여러 가지 Customize 기능을 제공하고 있으니
깃 주소를 방문하여 해당 README 문서를 확인하여 사용하시고
오늘도 알차게 코딩 하세요!! 🧑💻🧑💻
Android 13 Notification Permission
여기까지 저의 긴 글을 읽어주셔서 감사합니다.
제가 습관적으로 코딩을 하는 그날까지 습관적으로 코딩을 하기 위해 글 작성을 꾸준하게 해보겠습니다.
'Android > 스터디 노트' 카테고리의 다른 글
Android PhotoPicker 권한 없이 갤러리에서 이미지 가져오기/이미지 다중 선택 (0) | 2022.11.15 |
---|---|
Android 13 Notification Permission 알림 권한 띄우기. (9) | 2022.11.08 |
[Android] Android Debug Mode 잘 활용하기 (안드로이드 스튜디오 디버깅). (2) | 2022.10.12 |
Clean Code - 주석 어떻게 사용하고 있나요? (0) | 2022.08.31 |
[Android] RecyclerView Drag&Drop/Swipe 기능 구현(ItemTouchHelper) 드래그 앤 드롭 (1) | 2022.08.21 |
최근댓글