Popularity
0.8
Growing
Activity
5.6
Declining
15
1
0

Description

EasyPermissionsKt is a lightweight Android library that abstracts all runtime permission boilerplate code to simplify the system permissions management. The lib is lifecycle aware and uses the new recommended way to get results from activities (https://developer.android.com/training/basics/intents/result?hl=pt-br)

Programming language: Kotlin
License: Apache License 2.0

Easy Permissions Kt alternatives and similar packages

Based on the "Kotlin" category.
Alternatively, view android-easy-permissions-kt alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of Easy Permissions Kt or a related project?

Add another 'Kotlin' Package

README

Easy Permissions Kt

Language License JitPack ktlint

EasyPermissionsKt is a lightweight Android library that abstracts all runtime permission boilerplate code to simplify the system permissions management. The lib is lifecycle aware and uses the new recommended way to get results from activities (https://developer.android.com/training/basics/intents/result?hl=pt-br)

How to add

Step 1. Add the JitPack repository to your build file

allprojects {
    repositories {
      ...
      maven { url 'https://jitpack.io' }
    }
}

Step 2. Add the dependency

Gradle:

dependencies {
    implementation 'com.github.wellingtoncabral:android-easy-permissions-kt:<LATEST-VERSION>'
}

Kotlin:

dependencies {
    implementation ("com.github.wellingtoncabral:android-easy-permissions-kt:$LATEST_VERSION")
}

How to use

Register the EasyPermissionKt and implement the result callback. The result can be handled in 3 states as described below:

Using from Activities

class MyActivity : AppCompatActivity() {
    ...
    private val easyPermission = registerForPermissionsResult {
        whenPermissionGranted {
            // All permissions granted
            TODO()
        }
        whenPermissionShouldShowRationale { permissions ->
            // Permissions denied but not permanently.
            // The app should show a rationale to the user in
            // a UI element.
            // @see [https://developer.android.com/training/permissions/requesting#explain]
            TODO()
        }
        whenPermissionDeniedPermanently { permissions ->
            // Permission denied permanently
            TODO()
        }
    }   
}

Using from Fragments

// Using from Fragment
class MyFragment : Fragment() {

    private lateinit var easyPermission: EasyPermissionKt

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        easyPermission = registerForPermissionsResult {
            whenPermissionGranted {
                TODO()
            }
            whenPermissionShouldShowRationale { permissions ->
                TODO()
            }
            whenPermissionDeniedPermanently { permissions ->
                TODO()
            }
        }
    }
}

To request permissions, just call the requestPermissions function passing one or more permissions as shown below:

// Requesting permission or permissions
easyPermission.requestPermissions(
    Manifest.permission.CAMERA,
    Manifest.permission.WRITE_EXTERNAL_STORAGE
)

It is also possible to create an explanatory UI for the user before asking for permission. The implementation below uses WithDialog which creates a native AlertDialog.

// Requesting permission with an explain why dialog
easyPermission
    .explainWhy( 
        WithDialog(
            title = "Permission Request",
            description = "To easily connect with family and friends, allow the app access to your contacts",
            positiveButtonText = "Continue",
            negativeButtonText = "Not now"
        )
    )
    .requestPermissions(Manifest.permission.READ_CONTACTS)

However, you can create any UI. Just create a class and implement the ExplainWhyUI interface. In the show() method use the lambda continuation parameter to decide if the API continues with the request or cancels.

Features

The EasyPermissionKt library supports the following features:

fun requestPermissions(vararg permissions: String)
fun hasPermissionFor(vararg permissions: String): Boolean
fun shouldShowRequestPermissionRationale(permission: String): Boolean
fun explainWhy(explainWhyUI: ExplainWhyUI): EasyPermissionKt

Demo


*Note that all licence references and agreements mentioned in the Easy Permissions Kt README section above are relevant to that project's source code only.