J'ai travaillé sur un programme Android pour envoyer un e-mail avec une pièce jointe (fichier image, fichier audio, etc.) en utilisant Intent avec ACTION_SEND
. Le programme fonctionne lorsque l'e-mail contient une seule pièce jointe. J'avais l'habitude Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri)
de joindre le fichier image désigné au courrier et cela fonctionne bien, le courrier peut être livré via Gmail. Cependant, lorsque j'ai essayé d'avoir plusieurs images jointes au même courrier en appelant Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri)
plusieurs fois, cela n'a pas fonctionné. Aucune des pièces jointes n'apparaît dans l'e-mail.
J'ai recherché la documentation du SDK et le groupe d'utilisateurs de programmation Android sur les pièces jointes aux e-mails, mais je ne trouve aucune information connexe. Cependant, j'ai découvert qu'il existe une autre constante d'intention ACTION_SEND_MULTIPLE
(disponible depuis le niveau d'API 4) qui pourrait répondre à mes besoins. Sur la base de la documentation du SDK, il indique simplement qu'il fournit plusieurs données à quelqu'un d'autre, cela fonctionne comme ACTION_SEND
, sauf que les données sont multiples. Mais je ne pouvais toujours pas comprendre l'utilisation correcte de cette commande. J'ai essayé de déclarer l'intention avec ACTION_SEND_MULTIPLE
, puis d'appeler putExtra(EXTRA_STREAM, uri)
plusieurs fois pour joindre plusieurs images, mais j'ai obtenu le même résultat erroné que précédemment, aucune pièce jointe n'apparaît dans l'e-mail.
Quelqu'un a-t-il essayé ACTION_SEND_MULTIPLE
et fait fonctionner plusieurs pièces jointes?
la source
Réponses:
Voici le code dont vous avez besoin pour créer un emailIntent contenant plusieurs pièces jointes.
la source
emailIntent.setType("text/plain");
. Si vous utilisez "plain / text" Android forcera à utiliser GMail comme expéditeur, mais si vous utilisez "text / plain", il fournira un dialogue de sélection d'application avec Gmail, Facebook, Bluetooth etc. Si vous souhaitez proposer uniquement des programmes de messagerie utilisez plutôt "text / xml".context.startActivity(emailIntent);
la case à cocher «Utiliser par défaut pour cette action» apparaîtra dans la boîte de dialogue du sélecteur d'application, ainsi l'utilisateur pourra sélectionner l'application par défaut pour l'envoi des e-mails avec plusieurs pièces jointes.ACTION_SEND_MULTIPLE
devrait être l'actionpuis
emailIntent.setType("text/plain");
suivi par:
Cela fonctionne pour moi.
la source
Bien que ce soit un vieux fil, mais comme il est montré en haut sur les recherches Google, je veux ajouter un petit indice pour le rendre complet, c'est pourquoi je suis tombé dessus.
Il est nécessaire de rendre les fichiers joints lisibles pour l'activité de messagerie, sinon ils ne seront pas joints. Donc tu dois appeler quelque part
la source
Ici, j'ai trouvé un excellent exemple http://www.blackmoonit.com/2010/02/filebrowser-send-receive-intents/
Tu dois utiliser
la source
Pour plusieurs pièces jointes, utilisez
PutParcelableArrayListExtra(Intent.ExtraStream, uris)
où la variable uris est aList<IParcelable>().
Voici un exemple:J'espère que cela t'aides ;)
la source