안드로이드 11 권한 자동 삭제 기능 대응(Permission Auto-reset)

2021. 10. 1. 13:10·Android Development
반응형

Android 11 에서는 권한 자동 삭제 기능이 추가되었습니다. 

이 기능은 오랫동안 사용하지 않은 앱이 권한을 계속 가지고 있는 문제점을 해결하기 위해서 나옵니다. 

 

이 영향을 받게 되는 권한은 런타임 권한입니다.

런타임 권한은 흔히 앱에서 사용자에게 요청을 표시하면서 허락을 구하는 그런 권한들입니다.

 

예외 처리

먼저 내 앱이 권한 자동 삭제 대상으로 되어 있는지 확인해봅니다.

https://developer.android.com/reference/android/content/pm/PackageManager#isAutoRevokeWhitelisted()

 

PackageManager  |  Android Developers

 

developer.android.com

대상자로 되어 있다면 권한 자동 삭제 예외 처리를 요청 하면 됩니다.

요청 방식은 '다른 앱 위에 표시' 요청 하는 방식과 동일합니다.

https://developer.android.com/training/permissions/requesting#request-disable-auto-reset

 

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

앱 권한 요청 모든 Android 앱은 액세스가 제한된 샌드박스에서 실행됩니다. 앱이 자체 샌드박스 밖에 있는 리소스나 정보를 사용해야 하는 경우 권한을 선언하고 이 액세스를 제공하는 권한 요청

developer.android.com

이 방식은 Auto reset whitelist 에 등록 되도록 요청할 수 있습니다. 

수동적인 방식으로 사용자가 직접 앱 설정에서 가능하지만,

일반적으로 사용자에게 요구해서 설정 해제를 요청하는 과정을 기획으로 풀어야 합니다.

추가적인 고려 사항

여기서 모두 끝나지 않습니다. 

현 시점(2021년 10월) 기준으로 이 기능은 2021년 12월부터 적용 범위를 더욱 확대합니다.

6.0 부터 10 까지 모든 안드로이드에서 Google Play services 를 통해서 기능이 확대 제공되며, 

이를 해결하기 위한 방안이 필요합니다. 

이를 위해서 구글에서 제공하는 API 가 있지만 현재 베타 버전 상태입니다.

따라서 추후 안정화된 호환성 API 를 기반으로 다시 작업을 진행해줘야 합니다.

 

Comparing current and new behavior

Current behavior New behavior
Permissions are automatically reset on Android 11 (API level 30) and higher devices. Permissions are automatically reset on the following devices:
  • Devices with Google Play services that are running a version between Android 6.0 (API level 23) and Android 10 (API level 29), inclusive.
  • All devices running Android 11 (API level 30) and higher devices.
Permissions are reset by default for apps targeting Android 11 or later. The user can manually enable auto-reset for apps targeting Android 6.0 (API level 23) or later. No change from the current behavior.
Apps can request the user to disable auto-reset for the app. No change from the current behavior.

The table below summarizes the new, cross-platform API (compared to the API published in Android 11):

Action Android 11 API
(works only on Android 11 and later devices)
New, cross-platform API
(works on Android 6.0 and later devices, including Android 11 and later devices)
Check if permission auto-reset is enabled on the device Check if 
Build.VERSION.SDK_INT >= Build.VERSION_CODES.R
Call 
androidx.core.content.
PackageManagerCompat.
getUnusedAppRestrictionsStatus()
Check if auto-reset is disabled for your app Call
 PackageManager.
isAutoRevokeWhitelisted()
Call 
androidx.core.content.
PackageManagerCompat.
getUnusedAppRestrictionsStatus()
Request that the user disable auto-reset for your app Send an intent with action
Intent.ACTION_AUTO_REVOKE_PERMISSIONS
Send an intent created with
androidx.core.content.
IntentCompat.
createManageUnusedAppRestrictionsIntent()

이에 대한 설명이 아래 잘 나왔으니 확인해보면 좋겠습니다.

https://android-developers.googleblog.com/2021/09/making-permissions-auto-reset-available.html

 

Making permissions auto-reset available to billions more devices

Posted by Peter Visontay, Software Engineer; Bessie Jiang, Software Engineer Contributors: Inara Ramji, Software Engineer; Rodrigo Farel...

android-developers.googleblog.com

 

감사합니다.

 

저작자표시 비영리 변경금지 (새창열림)

'Android Development' 카테고리의 다른 글

CoroutineName 과 Coroutine 디버깅  (0) 2023.01.13
AAR 의존성 추가하기  (0) 2023.01.13
Gradle Kotlin DSL issue - Cannot access class 'java.io.OutputStream'. Check your module classpath for missing or conflicting dependencies  (0) 2021.09.06
Unboxing of 'map.get(key.toString())' may produce 'NullPointerException'  (0) 2021.09.04
build.gradle.kts 에서 getByName error 발생  (0) 2021.09.04
'Android Development' 카테고리의 다른 글
  • CoroutineName 과 Coroutine 디버깅
  • AAR 의존성 추가하기
  • Gradle Kotlin DSL issue - Cannot access class 'java.io.OutputStream'. Check your module classpath for missing or conflicting dependencies
  • Unboxing of 'map.get(key.toString())' may produce 'NullPointerException'
fogthegreat
fogthegreat
아주 오랫동안 이것 저것 개발하면서 배우고 찾아 본 것들을 적거나 모았습니다. 불편한 점이 있다면 알려주세요. (과거에 불펌한 글들을 모두 제거하고 있는 중이에요. 🙏)
  • fogthegreat
    꿈소년의 개발 이야기
    fogthegreat
  • 전체
    오늘
    어제
    • 전체보기 (242)
      • Software Engineering (56)
      • Android Development (78)
      • 일상다반사 (63)
      • 책에 대한 거의 모든 것 (11)
      • 영어공부 (1)
      • ETC (0)
      • 챌린지 (1)
      • Do it 스터디! (32)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 향로
    • 청하가 제안하는 소프트웨어 엔지니어로써 재미있게 사는 …
    • WhoRU? Story...♡
    • Snapshot
    • 두잇! - 이지스퍼블리싱
    • 제이펍의 참 똑똑한 2비트 책 이야기
    • Inpa Dev
  • 공지사항

  • 인기 글

  • 태그

    안철수
    js
    개발
    안드로이드
    ActiveX
    리눅스
    java
    html
    보안
    hcj
    자바
    git
    C++
    Android 4.1
    build.gradle
    google
    OOM
    탐지기법
    코틀린
    노개북
    JavaScript
    Android
    linux
    안드로이드 개발
    하버드
    gradle
    kotlin
    구글
    Eclipse
    css
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
fogthegreat
안드로이드 11 권한 자동 삭제 기능 대응(Permission Auto-reset)
상단으로

티스토리툴바