trabajo puedo por movil grande google enviar electronico desde correo compartir como celular archivos archivo adjunto adjuntar android email android-intent attachment

android - puedo - como enviar un video por gmail desde el movil



Android múltiples archivos adjuntos de correo electrónico con intención (5)

Aquí encontré un gran ejemplo http://www.blackmoonit.com/2010/02/filebrowser-send-receive-intents/

debes usar

final Intent aIntent = new Intent(Intent.ACTION_SEND_MULTIPLE); aIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,theUris); aIntent.setType(theOverallMIMEtype);

He estado trabajando en un programa de Android para enviar correos electrónicos con un archivo adjunto (archivo de imagen, archivo de audio, etc.) usando Intent with ACTION_SEND . El programa funciona cuando el correo electrónico tiene un solo archivo adjunto. Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri) para adjuntar el archivo de imagen designado al correo y está funcionando bien, el correo se puede entregar a través de Gmail. Sin embargo, cuando traté de tener varias imágenes adjuntas al mismo correo llamando Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri) varias veces, no funcionó. Ninguno de los archivos adjuntos aparece en el correo electrónico.

Busqué en la documentación del SDK y en el grupo de usuarios de la programación de Android los datos adjuntos al correo electrónico, pero no puedo encontrar ninguna información relacionada. Sin embargo, descubrí que hay otra constante de intención ACTION_SEND_MULTIPLE (disponible desde el nivel 4 de API) que podría cumplir con mis requisitos. Según la documentación de SDK, simplemente indica que entrega múltiples datos a otra persona, funciona como ACTION_SEND , excepto que los datos son múltiples. Pero todavía no pude entender el uso correcto de este comando. Traté de declarar el intento con ACTION_SEND_MULTIPLE , y luego llamé a putExtra(EXTRA_STREAM, uri) varias veces para adjuntar varias imágenes, pero obtuve el mismo resultado erróneo al igual que antes, ninguno de los datos adjuntos aparece en el correo electrónico.

¿Alguien ha intentado con ACTION_SEND_MULTIPLE y ha funcionado con varios archivos adjuntos de correo electrónico?


Aquí está el código que necesita para crear un emailIntent que contenga múltiples archivos adjuntos.

public static void email(Context context, String emailTo, String emailCC, String subject, String emailText, List<String> filePaths) { //need to "send multiple" to get more than one attachment final Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE); emailIntent.setType("text/plain"); emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{emailTo}); emailIntent.putExtra(android.content.Intent.EXTRA_CC, new String[]{emailCC}); emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject); emailIntent.putExtra(Intent.EXTRA_TEXT, emailText); //has to be an ArrayList ArrayList<Uri> uris = new ArrayList<Uri>(); //convert from paths to Android friendly Parcelable Uri''s for (String file : filePaths) { File fileIn = new File(file); Uri u = Uri.fromFile(fileIn); uris.add(u); } emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); context.startActivity(Intent.createChooser(emailIntent, "Send mail...")); }


Aunque este es un hilo antiguo, pero como se muestra en la parte superior de las búsquedas de Google, quiero agregar una pequeña sugerencia para completarlo, por lo tanto, me di cuenta de ello.

Es necesario hacer que los archivos adjuntos sean legibles para la actividad de correo, de lo contrario no se adjuntarán. Entonces tienes que llamar a algún lado

fileIn.setReadable(true, false)


Para archivos adjuntos múltiples use PutParcelableArrayListExtra(Intent.ExtraStream, uris) donde la variable uris es una List<IParcelable>(). Aquí hay un ejemplo:

var email = new Intent(Intent.ActionSendMultiple); email.SetType("text/plain"); email.PutExtra(Intent.ExtraEmail, new string[]{emailTo}); email.PutExtra(Intent.ExtraCc, new string[]{emailCC}); var uris = new List<IParcelable>(); filePaths.ForEach(file=> { var fileIn = new File(file); var uri = Android.Net.Uri.FromFile(fileIn); uris.Add(uri); }); email.PutParcelableArrayListExtra(Intent.ExtraStream, uris); context.StartActivity(Intent.CreateChooser(email, "Send mail..."));

Espero que esto ayude ;)


ACTION_SEND_MULTIPLE debería ser la acción

y luego emailIntent.setType("text/plain");

seguido por:

ArrayList<Uri> uris = new ArrayList<Uri>(); String[] filePaths = new String[] {"sdcard/sample.png", "sdcard/sample.png"}; for (String file : filePaths) { File fileIn = new File(file); Uri u = Uri.fromFile(fileIn); uris.add(u); } emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); startActivity(emailIntent);

Esto funciona para mí