일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 악성코드
- git
- 노개북
- KTS
- Android
- 리눅스
- gradle
- C++
- 탐지기법
- 안철수
- 보안
- 하버드
- 개발
- java
- mime
- c
- 안드로이드 개발
- 구글
- build.gradle
- 코틀린
- OOM
- 자바
- ActiveX
- 안드로이드
- kotlin
- Android 4.1
- ActiveMovieControl
- linux
- Eclipse
- Today
- Total
꿈소년의 개발 이야기
안드로이드 11 권한 자동 삭제 기능 대응(Permission Auto-reset) 본문
Android 11 에서는 권한 자동 삭제 기능이 추가되었습니다.
이 기능은 오랫동안 사용하지 않은 앱이 권한을 계속 가지고 있는 문제점을 해결하기 위해서 나옵니다.
이 영향을 받게 되는 권한은 런타임 권한입니다.
런타임 권한은 흔히 앱에서 사용자에게 요청을 표시하면서 허락을 구하는 그런 권한들입니다.
예외 처리
먼저 내 앱이 권한 자동 삭제 대상으로 되어 있는지 확인해봅니다.
https://developer.android.com/reference/android/content/pm/PackageManager#isAutoRevokeWhitelisted()
대상자로 되어 있다면 권한 자동 삭제 예외 처리를 요청 하면 됩니다.
요청 방식은 '다른 앱 위에 표시' 요청 하는 방식과 동일합니다.
https://developer.android.com/training/permissions/requesting#request-disable-auto-reset
이 방식은 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:
|
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
감사합니다.
'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 |