꿈소년의 개발 이야기

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

Android Development

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

꿈소년 2021. 10. 1. 13:10
반응형

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

 

감사합니다.