5

I am trying to get multiple images from gallery in my app's onActivity Result method but I am not able to create a cursor for the same . And if I do not use cursor than I am unable to get the Uris of all the images. If I have to select a single image , the code is pretty simple :

@Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   super.onActivityResult(requestCode, resultCode, data);

 if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
     Uri selectedImage = data.getData();
     String[] filePathColumn = { MediaStore.Images.Media.DATA };

     Cursor cursor = getContentResolver().query(selectedImage,
             filePathColumn, null, null, null);
     cursor.moveToFirst();

     int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
     String picturePath = cursor.getString(columnIndex);
     cursor.close();

     // String picturePath contains the path of selected Image
     }

Can anybody help me with this.

Puneetr90
  • 199
  • 1
  • 6
  • 18

2 Answers2

8

Gallery doesn't seem to allow multiple items, but other apps that may respond to the chooser intent can (e.g. Photos on my Samsung Galaxy tablet). You can get the multiple Uris by using getClipData(), something like:

ClipData clip = data.getClipData();

for(int i = 0; i < clip.getItemCount(); i++) {
    ClipData.Item item = clip.getItemAt(i);
    Uri uri = item.getUri();

    // Process the uri...
}

Note you might also get a response as data.getData(), as in your question, so it's necessary to check both...

Mete
  • 5,495
  • 4
  • 32
  • 40
0

I am not sure the SDK allows you to use an intent to select multiple images. You may have to develop your own Image Picker.

You can explore this github repo and see how it works: https://github.com/luminousman/MultipleImagePick

thomasg
  • 571
  • 4
  • 17