Skip to content

dapadz/PermKit

Repository files navigation

PermKit

API License

English | Русский

PermKit is a lightweight Android toolkit for runtime permissions. It provides a clean core API and integration modules for both classic View UI and Jetpack Compose.

Features

  • Minimal and explicit permission request API.
  • Deferred launch model (request(...).start()).
  • Separate integration modules for View and Compose.
  • Utility helpers for common permission scenarios.

Modules

  • core: Core contracts and result helpers.
  • view: Activity/Fragment integration via Activity Result API.
  • compose: Compose integration via rememberLauncherForActivityResult.
  • utils: Convenience extension functions and typed utility result.

Installation

dependencies {
    implementation("ru.dapadz.permkit:core:1.0.0")

    // Choose one UI integration module (or use both if needed)
    implementation("ru.dapadz.permkit:view:1.0.0")
    implementation("ru.dapadz.permkit:compose:1.0.0")

    // Optional utility extensions
    implementation("ru.dapadz.permkit:utils:1.0.0")
}

Quick Start (View)

import ru.dapadz.permkit.view.permissionRequester

class CameraFragment : Fragment() {

    private val permissionRequester by permissionRequester()

    fun onCameraClick() {
        permissionRequester
            .request(Manifest.permission.CAMERA) { result ->
                if (result.isAllGranted) {
                    openCamera()
                }
            }
            .start()
    }
}

For advanced or explicit construction flows, you can still create a requester via PermissionRequesterFactory(this).create().

Quick Start (Compose)

@Composable
fun NotificationPermissionButton() {
    val permissionRequester = rememberPermissionRequester()

    Button(
        onClick = {
            permissionRequester
                .request(Manifest.permission.POST_NOTIFICATIONS) { result ->
                    if (result.isAllGranted) {
                        // Permission granted
                    }
                }
                .start()
        }
    ) {
        Text("Request notification permission")
    }
}

Utility API (utils)

utils adds predefined helpers:

  • requestStoragePermission(...)
  • requestCameraPermission(...)
  • requestNotificationPermission(...)

Each helper returns a typed PermissionPresets.Result with either Success or Denied.

Contributing

Issues and pull requests are welcome. When contributing, please include:

  • clear behavior description,
  • reproducible steps,
  • tests or sample usage for changes when possible.

License

PermKit is distributed under the Apache License 2.0. See LICENSE.

About

PermKit is a lightweight Android toolkit for runtime permissions. It provides a clean core API and integration modules for both classic View UI and Jetpack Compose.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages