Android: Intent.EXTRA_ALLOW_MULTIPLE allows you to use only one set

I want to open several images from the Android gallery using the Intent.EXTRA_ALLOW_MULTIPLE intent filter:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { final Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true); startActivityForResult(Intent.createChooser(intent, "Add images"), SELECT_MULTIPLE_IMAGES); } 

But any application that I use (native gallery, QuickPic application), I can only select one image. The test device runs Android 5.1.

How to select multiple images?

+8
android android-intent image-gallery
source share
3 answers

This currently works in one of my recent live applications, which covers the selection of images using Gallary for 4.4 and above, using a recording of my own gallery.

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { try { Intent intent = new Intent(); intent.setType("image/*"); intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent, "Select Picture"), SELECT_IMAGE_REQUEST_GALLERY); }catch(Exception e){ Intent photoPickerIntent = new Intent(this, XYZ.class); startActivityForResult(photoPickerIntent, SELECT_IMAGE_REQUEST); } } else { Intent photoPickerIntent = new Intent(this, XYZ.class); startActivityForResult(photoPickerIntent, SELECT_IMAGE_REQUEST); } 
+11
source share

Therโ€™s parent gallery doesnโ€™t display much, but you can do it with this library: https://github.com/luminousman/MultipleImagePick

+2
source share
 /** * Extra used to indicate that an intent can allow the user to select and * return multiple items. This is a boolean extra; the default is false. If * true, an implementation is allowed to present the user with a UI where * they can pick multiple items that are all returned to the caller. When * this happens, they should be returned as the {@link #getClipData()} part * of the result Intent. * * @see #ACTION_GET_CONTENT * @see #ACTION_OPEN_DOCUMENT */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK) { if (data.getData() != null) { try { files.clear(); Uri uri = data.getData(); String url = FileUtils2.getPath(this, uri); assert url != null; File file = new File(url); files.add(file); mPresenter.postAnnexData(files); } catch (Exception e) { e.printStackTrace(); } } else { //If uploaded with the new Android Photos gallery ClipData clipData = data.getClipData(); files.clear(); if (clipData != null) { for (int i = 0; i < clipData.getItemCount(); i++) { ClipData.Item item = clipData.getItemAt(i); Uri uri = item.getUri(); String url = FileUtils2.getPath(this, uri); assert url != null; File file = new File(url); files.add(file); } } mPresenter.postAnnexData(files); } } } 
0
source share

All Articles