작성일: 2022-05-05
Android permission
https://source.android.com/devices/tech/config
- Android 9 이하에서는 패키지 설치 및 권한 제어 기능이 PackageInstaller 패키지에 포함됨
- packages/apps/PackageInstaller
- Android 10 이상에서는 권한 제어 기능이 별도의 패키지인 PermissionController로 나눠짐
- packages/apps/PermissionController
- GPSU(mainline project)에서 모듈로 제공
- Android 6.0 이상에서는 앱이 런타임 시 위험한 권한에 대해 액세서를 요청함
런타임 권한
https://source.android.com/devices/tech/config/runtime_perms
- Android 6.0 부터 “설치 시간 권한” → “런타임 권한”
- 설치 시간 권한
- Android 5.1 이하
- 앱 설치하거나 업데이트할 때 위험한 권한 부여
- 기기제조업체와 이동통신사는 사용자에게 알리지 않고 사전부여된 권한으로 앱을 사전 설치할 수 있음
- 런타임 권한
- Android 6.0 이상
- 사용자가 앱을 실행할 때 위험한 권한을 앱에 부여
- OEM/이동통신사는 앱을 사전 설치할 수 있지만, 예외 프로세스(예외 생성)를 거치지 않는 이상 권한을 미리 부여할 수 없음
예외 생성
PackageManager에서 DefaultPermissionGrantPolicy.java 클래스를 사용하면 핵심 OS 기능의 기본핸들러 또는 제공업체인 애플리케이션에 권한을 사전 부여할 수 있습니다.
ACTION_CALL (Dialer) Default
Phone, Contacts, SMS, Microphone
SMS_DELIVER_ACTION (SMS/MMS) Default
Phone, Contacts, SMS
TedPermmision
https://github.com/ParkSangGwon/TedPermission