/activityresult

Android Runtime permissions & receiving results w/ ActivityResult API

Primary LanguageKotlin

ActivityResultPermission - Android Runtime permissions & receiving results w/ ActivityResult API

Sample app (apk)

Usage

  1. 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" />
  2. Create and register request launcher in Activity or Fragment

    val permission = PermissionRequest()
    permission.register(this)
    
    val imagePicker = GetContentUriLauncher()
    imagePicker.register(this)
  3. 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") }
    }
  4. 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

Installation

Latest version isâ €

# 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>'