Skip to main content

How to select an image from gallery using ImagePicker in Kotlin Android

How to select an image from gallery using ImagePicker in Kotlin Android.

Here's a step-by-step tutorial on how to select an image from the gallery using ImagePicker in Kotlin for Android:

Step 1: Set up your project

Before we begin, make sure you have a working Android project set up in Kotlin. If you haven't done so, you can create a new project in Android Studio.

Step 2: Add ImagePicker dependency

To use ImagePicker in your project, you need to add the ImagePicker dependency to your app-level build.gradle file. Open the build.gradle file and add the following line to the dependencies block:

implementation 'com.github.dhaval2404:imagepicker-support:1.2'

Sync your project to download the dependency.

To access the device's gallery, you need to request the necessary permissions. Open your AndroidManifest.xml file and add the following permission:

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

You also need to request the permission at runtime. Add the following code to your activity class:

private val REQUEST_CODE_PERMISSION = 1001

private fun requestPermission() {
if (ContextCompat.checkSelfPermission(
this,
Manifest.permission.READ_EXTERNAL_STORAGE
) != PackageManager.PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE),
REQUEST_CODE_PERMISSION
)
} else {
// Permission already granted
}
}

override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<String>,
grantResults: IntArray
) {
if (requestCode == REQUEST_CODE_PERMISSION) {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission granted
} else {
// Permission denied
}
}
}

Call the requestPermission() function before accessing the gallery.

Step 4: Add ImagePicker code

Now, let's add the code to select an image from the gallery using ImagePicker.

import com.github.dhaval2404.imagepicker.ImagePicker

private val REQUEST_CODE_IMAGE = 2001

private fun selectImageFromGallery() {
ImagePicker.with(this)
.galleryOnly()
.start(REQUEST_CODE_IMAGE)
}

The selectImageFromGallery() function will open the gallery and allow the user to select an image.

Step 5: Handle the result

Finally, you need to handle the result of the image selection.

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_CODE_IMAGE && resultCode == Activity.RESULT_OK) {
val fileUri = data?.data
// Do something with the selected image fileUri
}
}

In the onActivityResult() method, you can retrieve the selected image's file URI using data?.data. You can then perform further operations with the selected image, such as displaying it in an ImageView or uploading it to a server.

That's it! You have now successfully implemented image selection from the gallery using ImagePicker in Kotlin for Android.