Home » Android » android – Receiving an ACTION_SEND intent from the Gallery

android – Receiving an ACTION_SEND intent from the Gallery

Posted by: admin June 15, 2020 Leave a comment

Questions:

I am trying to receive an image from the Android Gallery via an ACTION_SEND intent. I have set the proper intent filters and the Gallery opens my app. Now I want to know how to get at the image data. I can’t find any examples on the internet of how this is done. I figure the path is somewhere in intent.getData() but how exactly do I pull that image from the gallery?

How to&Answers:

Found this in the Picasa source. It gives the proper path of the image.

    Intent intent = getIntent();
    if (Intent.ACTION_SEND.equals(intent.getAction())) {
        Bundle extras = intent.getExtras();
        if (extras.containsKey(Intent.EXTRA_STREAM)) {
            Uri uri = (Uri) extras.getParcelable(Intent.EXTRA_STREAM);
            String scheme = uri.getScheme();
            if (scheme.equals("content")) {
                String mimeType = intent.getType();
                ContentResolver contentResolver = getContentResolver();
                Cursor cursor = contentResolver.query(uri, null, null, null, null);
                cursor.moveToFirst();
                String filePath = cursor.getString(cursor.getColumnIndexOrThrow(Images.Media.DATA));

Answer:

Not sure about the SEND intent, but when handling returns from PICK intents to the MediaStore for a photo, it goes something like:

    Uri selectedImage = intent.getData();
    AssetFileDescriptor fd = getContentResolver()
            .openAssetFileDescriptor(selectedImage, "r");
    FileInputStream s = fd.createInputStream();
    // your image data processing code here

Be careful though – you can be working with 5+ megapixel files, which can be quite large (especially if you’re uncompressing them to bitmaps to process), and your memory is pretty limited.