How to ask permission, the clean way
summary
Shows a concrete PermissionService that exposes a Flow of permission states and a CompletableDeferred-based suspend request so callers await results instead of juggling callbacks. Implementation parses manifest permissions, updates state on ActivityLifecycleCallbacks (resume), and uses a headless Fragment to invoke system dialogs and complete pending deferreds. Helpers return maps/lists that are 100% unit-testable and repositories check permission flow before accessing system APIs (location, camera), keeping viewmodels and UI free of if/else permission logic.
AI-written summary · about
chapters (11)
- 0:00Introduction
- 2:30Clean architecture recap
- 6:27Current permission handling issues
- 7:32Dream permission data service
- 8:58Permission beta library
- 11:27Permission state flow
- 13:31Requesting permissions
- 15:16Zero UI fragment solution
- 17:03Handling activity recreation
- 19:49Clean architecture benefits
- 20:52Q&A and conclusion
related talks
36mStreamlining Permission Request in Jetpack Compose
23mPermissions with Headless Fragment
13mFoster user trust by adopting privacy-respecting permission workflows
41m"Mother, May I?" Asking for Permissions
37mStriptease of The Android Permissions System (en)
46mEffortless Notifications and Permissions with Kotlin-friendly APIs
19mAdapting Your Apps for Android Q Privacy Requirements
08mBest practices for building privacy-friendly apps
