How to open image gallery in android 14 (Api 34) to pick image?

1.1k Views Asked by At

I have used following code for pick image from gallery. It is working till android 13 (Api 33) but it not working (gallery is not opening) on Android 14 (Api 34).

Intent photoPickerIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        photoPickerIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
        if (photoPickerIntent.resolveActivity(getPackageManager()) != null) {

            photoPickerIntent.setType("image/*");
            startActivityForResult(photoPickerIntent, PICK_IMAGE_MULTIPLE);
        }

Please help me in this. Thanks in advance.

1

There are 1 best solutions below

2
On BEST ANSWER

This is what I used in my project and it works on the latest android. mine has a firebase upload part it may be included in answer so use it as reference to help guide you.

 Uri FilePathUri;
 int Image_Request_Code = 7;
 private ActivityResultLauncher<String> imagePickerLauncher;

in onCreate

 imagePickerLauncher = registerForActivityResult(
            new ActivityResultContracts.GetContent(),
            result -> {
                if (result != null) {
                    // Handle the selected image
                    FilePathUri = result;
                    try {
                        Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), FilePathUri);
                        imgView.setImageBitmap(bitmap);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
    );
 btnBrowse.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            imagePickerLauncher.launch("image/*");

        }
    });

outside onCreate

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == Image_Request_Code && resultCode == RESULT_OK && data != null && data.getData() != null) {

        FilePathUri = data.getData();

        try {
            Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), FilePathUri);
            imgView.setImageBitmap(bitmap);
        } catch (IOException e) {

            e.printStackTrace();
        }
    }
}


public String GetFileExtension(Uri uri) {

    ContentResolver contentResolver = getContentResolver();
    MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
    return mimeTypeMap.getExtensionFromMimeType(contentResolver.getType(uri));

}