Jetpack Compose 기반의 [권한 체크] 및 [권한 요청] 구현 샘플 프로젝트 프로젝트의 형식으로 만들기 위해 다소 코드가 추가되었지만 실제 사용 시, 보다 간편하게 사용할 수 있다.
- Jetpack Compose를 이용한 권한 체크 및 권한 요청 구현
- LazyColumn을 이용한 권한 목록 구현
- Android Studio Hedgehog | 2023.1.1 Patch 1
- Build #AI-231.9392.1.2311.11255304, built on December 27, 2023
- Android SDK Build-Tools 35-rc2
- Android SDK Platform-Tools 34.0.5
- Java 1.8
- Kotlin Version: 1.9.22
- Kotlin Compose Compiler Version: 1.5.10
- Android Gradle Plugin Version: 8.1.2
- Gradle Version: 8.2
프로젝트 소스코드는 main만 사용 구성은 다음과 같다.
├── PermissionSample.kt
├── MainActivity.kt
├── data
├── permissions
├── ui
│ ├── components
│ │ └── dialog
│ ├── screens
│ │ └── mainscreen
│ └── themes
└── utils
├── data
│ └── PermissionData.kt
Data에는 Permission을 요청하고 허용 여부를 저장하는 프로퍼티로 구성된 PermissionData 클래스 존재
├── permissions
│ ├── PermissionCheck.kt
│ ├── permissionCheckList.kt
│ └── PermissionTextProvier.kt
Permission 패키지 내에는, Permission을 체크하고 요청하는 PermissionCheck 클래스와 Permission 목록을 가지고 있는 permissionCheckList Composable 메서드, 그리고 PermissionDialog에 텍스트를 제공하는 PermissionTextProvier 클래스 존재
요청이 필요한 Permission은 permissionCheckList에 추가하여 사용
실제 사용 시, 단일 퍼미션의 경우, 개별로 권할 요청 가능
해당 구성은 프로젝트를 샘플코드 형식으로 만들기 위함
├── ui
│ ├── components
│ │ └── dialog
│ │ └── PermissionDialog.kt
│ ├── screens
│ │ └── mainscreen
│ │ ├── MainState.kt
│ │ ├── MainEvent.kt
│ │ ├── MainScreen.kt
│ │ └── MainViewModel.kt
│ └── themes
ui는 화면을 구성하는 컴포넌트를 파일 수준 함수로 구성
PermissionDialog는 Permission 요청을 거부한 경우 표시되는 Dialog view를 구성- mainScreen은 MVI pattern의 presentation layer를 구성
MainState는 화면의 상태를 저장하는 클래스MainEvent는 화면의 이벤트를 저장하는 클래스MainScreen은 화면을 구성하는 Composable 메서드MainViewModel은 화면의 비즈니스 로직을 처리하는 ViewModel 클래스
├── utils
│ └── PermissionUtils.kt
확장함수 및 재사용성이 있는 유틸리티 메서드를 가지고 있다.




