Search code examples
androidandroid-imageandroid-galleryonactivityresult

Identify in onActivityResult if image was selected from gallery or video was selected - Android


I am using following code to select a image or video from gallery :

    imgGallery.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent pickPhoto = new Intent(Intent.ACTION_GET_CONTENT);
                    pickPhoto.setType("*/*");
                    String[] mimetypes = {"image/*", "video/*"};
                    pickPhoto.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
                    startActivityForResult(pickPhoto,
                            SELECT_PICTURE_OR_VIDEO);
                }
            });

Please note I am using same button for image or video selection. So when onActivityResult will be called, is there any way from which I can know that a image was selected or video was selected from the gallery?


Solution

  • You can check with below code.

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK && data.getData() != null) {
            String path = data.getData().getPath();
            if (path.contains("/video/")) {
                Log.d(this.getClass().getName(), "Video");
            } else if (path.contains("/images/")) {
                Log.d(this.getClass().getName(), "Image");
            }
        }
    }
    

    This will work definitely because the path which we will get is something like I didn't find anything other than this, this will work definitely because the path it returns something like this /external/images/media/2928 where we will not get any repetitive data. Because the URI here only contains the ID of the image in the database of android data store.