Android: Let User Pick Image Or Video From Gallery


Answer :

Pick Audio file from Gallery:

//Use MediaStore.Audio.Media.EXTERNAL_CONTENT_URI Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI); 

Pick Video file from Gallery:

//Use MediaStore.Audio.Media.EXTERNAL_CONTENT_URI Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Video.Media.EXTERNAL_CONTENT_URI); 

Pick Image from gallery:

//Use  MediaStore.Images.Media.EXTERNAL_CONTENT_URI Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 

Pick Media Files or images:

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

You start the gallery as such:

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

then in your onActivityResult you can check if video or image was selected by doing this:

public void onActivityResult(int requestCode, int resultCode, Intent data) {  if (resultCode == RESULT_OK) {     Uri selectedMediaUri = data.getData();     if (selectedMediaUri.toString().contains("image")) {         //handle image     } else  if (selectedMediaUri.toString().contains("video")) {         //handle video     } } 

(EDIT: I don't use it anymore, we went back to the two choices "pick image" and "pick video". The problem was with some Sony phone. So, it's not 100% solution below, be careful! )

This is what I use:

if (Build.VERSION.SDK_INT < 19) {     Intent intent = new Intent(Intent.ACTION_GET_CONTENT);     intent.setType("image/* video/*");     startActivityForResult(Intent.createChooser(intent, getResources().getString(R.string.select_picture)), SELECT_GALLERY); } else {     Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);     intent.addCategory(Intent.CATEGORY_OPENABLE);     intent.setType("image/*");     intent.putExtra(Intent.EXTRA_MIME_TYPES, new String[] {"image/*", "video/*"});     startActivityForResult(intent, SELECT_GALLERY_KITKAT); } 

The key here is intent.putExtra(Intent.EXTRA_MIME_TYPES, new String[] {"image/*", "video/*"});


Comments

Popular posts from this blog

Converting A String To Int In Groovy

"Cannot Create Cache Directory /home//.composer/cache/repo/https---packagist.org/, Or Directory Is Not Writable. Proceeding Without Cache"

Android How Can I Convert A String To A Editable