-
Prepare AndroidManifest (configure app permissions)
Declare all required permission requests in
AndroidManifest.xml
:<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-
Create and register request launcher in Activity or Fragment
val permission = PermissionRequest() permission.register(this) val imagePicker = GetContentUriLauncher() imagePicker.register(this)
-
Run
permissions.launch( // request WRITE_EXTERNAL_STORAGE only on API <= 29 ConditionalPermission( Manifest.permission.WRITE_EXTERNAL_STORAGE, Build.VERSION.SDK_INT <= Build.VERSION_CODES.Q ), Manifest.permission.CAMERA, onDenied = { denied, isCancelled -> showToast("onDenied $denied $isCancelled") }, onExplained = { explained -> showToast("onExplained $explained") }, onGranted = { showToast("Granted") } ) imagePicker.launch("image/*") { success = { imageUri -> setImageAsBackground(imageUri) } failed = { cause -> showToast("Image picker failed: $cause") } }
-
How to create custom result request
3.1 Pick any standard contract or create your own contract: example
3.2 Create launcher: extend
BaseLauncher
, example
# Top-level build.gradle
repositories {
...
maven { url 'https://jitpack.io' } # <-- Add this
}
# Permission request
implementation 'com.github.khoben.activityresult:permission:<latest_version>'
# Result request
implementation 'com.github.khoben.activityresult:result:<latest_version>'