3

I am using below code and it works fine below android 5. I am able to pick image or video from SD card.

Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("video/* image/*");
getActivity().startActivityForResult(photoPickerIntent, 1);

However on Android L it shows only videos. tried searching but didn't find anything, any help will be appreciated.

Rajesh Jadav
  • 12,801
  • 5
  • 53
  • 78
Mohit
  • 505
  • 8
  • 31

3 Answers3

5

hi @Mohit you can use this solution for image and video

Intent photoPickerIntent = new Intent(Intent.ACTION_GET_CONTENT);
photoPickerIntent.setType("*/*");
getActivity().startActivityForResult(photoPickerIntent, 1);

for both image and video you can use setType(*/*);

here ACTION_GET_CONTENT is give only gallery selection while ACTION_PICK give many more options to pick image and video from different action, So as per @DipeshDhakal answer you should use only ACTION_GET_CONTENT.

and this is work on android L and api 10 also.

Harin Kaklotar
  • 305
  • 7
  • 22
2

Use Intent.ACTION_GET_CONTENT

Intent photoPickerIntent = new Intent(Intent.ACTION_GET_CONTENT);
photoPickerIntent.setType("video/*, images/*");
startActivityForResult(photoPickerIntent, 1);
Rajesh Jadav
  • 12,801
  • 5
  • 53
  • 78
1

Was running into a similar issue. Code that worked on 5.0 and below started breaking on 5.1+, and only filtered by the first type passed in.

A co-worker came up the following, and I thought I'd share:

We were previously using the following intent:

Intent i = new Intent(Intent.ACTION_PICK, 
    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
i.setType("image/*,video/*");

and the following code to get the path from whatever the user selected, if anything:

public static String getFilePathFromURI(Uri imageUri, Activity context) {
    String filePath = null;

    String[] filePathColumn = { MediaStore.Images.Media.DATA };

    Cursor cursor = context.getContentResolver().query(imageUri,
            filePathColumn, null, null, null);
    if (cursor != null) {
        try {
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);

            filePath = cursor.getString(columnIndex);
        } finally {
            cursor.close();
        }
    }

    return filePath;
}

Now:

Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.setType("*/*");

String[] mimetypes = {"image/*", "video/*"};
i.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);

And to get the path, the getPath function found in this answer:

https://stackoverflow.com/a/20559175/434400

Community
  • 1
  • 1
Danedo
  • 2,193
  • 5
  • 29
  • 37