Android Permission 관련하여

앱 사용자와 개발자의 의견차이가 존재합니다.

 

앱유저 💁‍♂️ : " 왜 자꾸 권한을 요청하는거지 짜증나 "

개발자 🧑‍💻 : " 왜 자꾸 권한을 거절하는거지 짜증나 "

 

 

 

 

자 이제 안드로이드 앱 권한 요청에 대하여 알아봅시다.

먼저 Android Permission 관련하여 직접적인 예시를 보는게 가장 빠르겠죠?

 

 

 

배달의 민족 권한요청 예시

 

 

 

 

앱 권한 요청  |  Android 개발자  |  Android Developers

앱 권한 요청 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 모든 Android 앱은 액세스가 제한된 샌드박스에서 실행됩니다. 앱이 자체 샌드박스 밖에 있는 리

developer.android.com

 

 

위험한 권한

Android6.0(API 수준 23) 이상을 실행하는 기기에 설치된 경우 위험한 런타임 권한을 요청해야 합니다.

 

위험한 권한을 선언하지 않거나 앱이 Android5.1(API 수준 22) 이하를 실행하는 기기에 설치된 경우 권한이 자동으로 부여되므로 권한요청 단계를 완료하지 않아도 됩니다.

 

 

Android에서의 권한  |  Android 개발자  |  Android Developers

Android에서의 권한 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 앱 권한은 다음 항목에 대한 액세스를 보호하여 사용자 개인정보 보호를 지원합니다. 제한

developer.android.com

 

권한 요청

 

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 문서를 확인하여 사용하시고

오늘도 알차게 코딩 하세요!!  🧑‍💻🧑‍💻

 

 

GitHub - ParkSangGwon/TedPermission: Easy check permission library for Android Marshmallow

Easy check permission library for Android Marshmallow - GitHub - ParkSangGwon/TedPermission: Easy check permission library for Android Marshmallow

github.com

 

 


 

 

Android 13  Notification Permission 

 

 

Android 13 Notification Permission 알림 권한 띄우기

드디어 Android13 업데이트가 다가왔습니다. 이미 Google pixel 기종들은 업데이트가 가능하고 삼성 기기들은 S22 기종들부터 업데이트가 이미 가능하며 22.11부터 점진적으로 업데이트 일정이 나온다

salmonpack.tistory.com

 

 

Android13(SDK33) 이미지 및 사진 권한 (READ_EXTERNAL_STORAGE, READ_MEDIA_IMAGES)

프로젝트의 SDK Target을 33으로 변경하게 되면 기존 이미지 및 사진 권한이 갑자기 사라지는 현상을 마주하게 됩니다. (저는 항상 프로젝트 SDK Target 버전을 변경할 때마다 두렵습니다... 오늘은 또

salmonpack.tistory.com

 

 


여기까지 저의 긴 글을 읽어주셔서 감사합니다.

제가 습관적으로 코딩을 하는 그날까지 습관적으로 코딩을 하기 위해 글 작성을 꾸준하게 해보겠습니다.

 

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기