Search code examples
javaandroidvideopicker

Android: open video picker and filter videos seen by length


This is my code for opening up the picker for Videos and Images - however I need to not show Videos that are longer than 5 minutes in length. Is this possible?

 public void startChoosePhotoFromLibrary() {
        if (checkOrRequestExternalStoreagePermission()) {
            if (Build.VERSION.SDK_INT < 19) {
                Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
                photoPickerIntent.setType("image/* video/*");
                startActivityForResult(photoPickerIntent, PICK_PHOTO_ACTIVITY_REQUEST_CODE);
            } else {
                Intent photoPickerIntent = new Intent(Intent.ACTION_GET_CONTENT);
                photoPickerIntent.setType("*/*");
                photoPickerIntent.putExtra(Intent.EXTRA_MIME_TYPES, new String[]{"image/*", "video/*"});
                startActivityForResult(photoPickerIntent, PICK_PHOTO_ACTIVITY_REQUEST_CODE);
            }
        }
    }

Solution

  • This is my code for opening up the picker for Videos and Images

    ACTION_PICK does not use MIME types. ACTION_PICK picks from a collection of content, where that collection is identified by the Uri that you supply in the Intent.

    Also, MIME types do not have spaces in them.

    Is this possible?

    Not via those Intent actions, or via any content-selection mechanism that is part of the Android SDK.

    You are welcome to query the MediaStore for videos, and there may be a way to filter such videos by length. But then you would need to present your own UI for allowing the user to choose something from the query results (e.g., ListView, RecyclerView).