Saturday, April 30, 2011

Re: [android-developers] Send an email in Android selecting only email apps AND specifying attachment mime type

If you are willing to roll your own dialog, you could:

Step #1: Create the message/rfc822 Intent, as if you were going to
send that way, and use it with PackageManager and
queryIntentActivities() to find out who handles it.

Step #2: Create the image/png Intent, as if you were going to send
that way, and use it with PackageManager and queryIntentActivities()
to find out who handles it.

Step #3: Compute the intersection of those two sets of activities.

Step #4: Use those to populate an AlertDialog for the user to choose from.

Step #4a: If the intersection has one match, skip this step.

Step #4b: If the intersection has zero matches, let the user know
you can't send the message.

Step #5: Modify the image/png Intent to add the component selected
from the dialog, and call startActivity() on it.

By specifying the component in the Intent, it will go to that
particular activity. This is effectively what the regular chooser
does.

On Sat, Apr 30, 2011 at 7:26 AM, andrew <andrew@mackenzie-serres.net> wrote:
> In my Android App I send email messages with images attached.
>
> Using the Intent system to send it, I can do one of the following two
> things:
>
> 1) Specify type as "message/rfc822" so that ONLY email applications
> are shown in the Chooser.
>
> Inconvenience: I cannot specify the mime type of the image I attach
> using EXTRA_STREAM and a Uri. Many receiving email apps (Gmail,
> Android, etc) show this as an unknown binary "blob" attached to the
> message, don't know how to preview it and don't know how to open it as
> an attachment.
>
> 2) Specify the type as (say) "image/png". The image is attached and
> email clients such as Gmail can preview it, and open the attachment in
> the appropriate application.
>
> Inconvenience: For the sending user, I cannot reduce the list of apps
> the user has to select from in the Chooser to email apps, and MANY
> apps are shown in my Android device, most of which are not email apps
> and not what I want.
>
> Is there anyway to specify its a "message/rfc822" email Intent AND to
> specify the MIME type of the data attached via Uri in the
> Intent.EXTRA_STREAM?
>
> BTW: I am providing the file from my own ContentProvider and the
> getType() method (used to determine file MIME type) is NOT being
> called. The query() method is but doesn't request the file type, only
> display name and file size.

--
Mark Murphy (a Commons Guy)
http://commonsware.com | http://github.com/commonsguy
http://commonsware.com/blog | http://twitter.com/commonsguy

Android App Developer Books: http://commonsware.com/books

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

No comments:

Post a Comment