Skip to main content

How to request runtime permissions in Kotlin Android

How to request runtime permissions in Kotlin Android.

Here's a step-by-step tutorial on how to request runtime permissions in Kotlin Android:

Step 1: Declare Permissions in Manifest

Open your AndroidManifest.xml file and declare the permissions that your app requires. For example, if you want to request the READ_CONTACTS permission, add the following line inside the <manifest> tag:

<uses-permission android:name="android.permission.READ_CONTACTS"/>

Step 2: Check Permission Status

Before requesting a permission, it's important to check if it has already been granted. This is done using the ContextCompat.checkSelfPermission() method. You can create a helper function to check the permission status. Here's an example:

private fun isPermissionGranted(permission: String): Boolean {
return ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED

Step 3: Request Permission

To request a permission, you need to use the ActivityCompat.requestPermissions() method. This method takes three parameters: the Activity instance, an array of permissions to request, and a request code. Here's an example of how to request the READ_CONTACTS permission:

val permission = Manifest.permission.READ_CONTACTS
val requestCode = 123

if (!isPermissionGranted(permission)) {
ActivityCompat.requestPermissions(this, arrayOf(permission), requestCode)

Step 4: Handle Permission Response

After requesting the permission, the system will show a permission dialog to the user. Once the user responds to the dialog, the system will invoke the onRequestPermissionsResult() method of the Activity or Fragment that made the request. You need to override this method to handle the permission response. Here's an example:

override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
if (requestCode == 123) {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission granted
// Do something with the permission
} else {
// Permission denied
// Handle the denial case

Step 5: Handle Permission Rationale

Sometimes, the user may deny a permission and choose the "Don't ask again" option. In such cases, it's important to provide an explanation to the user about why the permission is required. You can check if the user has previously denied a permission using the ActivityCompat.shouldShowRequestPermissionRationale() method. If shouldShowRequestPermissionRationale() returns true, you can show a custom rationale dialog or message to the user. Here's an example:

if (ActivityCompat.shouldShowRequestPermissionRationale(this, permission)) {
// Show a custom rationale dialog or message explaining why the permission is required

That's it! You now know how to request runtime permissions in Kotlin Android. Remember to handle permission responses and provide appropriate explanations to the user when necessary.