Ich habe an einem Android-Programm gearbeitet, um E-Mails mit einem Anhang (Bilddatei, Audiodatei usw.) mit Intent with zu senden ACTION_SEND
. Das Programm funktioniert, wenn E-Mails einen einzelnen Anhang haben. Ich habe Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri)
die angegebene Bilddatei an die E-Mail angehängt und sie funktioniert einwandfrei. Die E-Mail kann über Google Mail zugestellt werden. Als ich jedoch versuchte, mehrere Bilder durch Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri)
mehrmaliges Aufrufen an dieselbe E-Mail anzuhängen , funktionierte dies nicht. Keiner der Anhänge wird in der E-Mail angezeigt.
Ich habe die Benutzergruppe SDK-Dokumentation und Android-Programmierung nach E-Mail-Anhängen durchsucht, kann jedoch keine verwandten Informationen finden. Ich habe jedoch festgestellt, dass es eine andere Absichtskonstante gibt ACTION_SEND_MULTIPLE
(verfügbar seit API-Stufe 4), die möglicherweise meine Anforderungen erfüllt. Basierend auf der SDK-Dokumentation wird lediglich angegeben, dass mehrere Daten an eine andere Person gesendet werden. Dies funktioniert wie ACTION_SEND
, außer dass die Daten mehrere sind. Aber ich konnte immer noch nicht die richtige Verwendung für diesen Befehl herausfinden. Ich habe versucht, die Absicht mit zu erklären ACTION_SEND_MULTIPLE
und dann putExtra(EXTRA_STREAM, uri)
mehrmals anzurufen , um mehrere Bilder anzuhängen, aber ich habe das gleiche fehlerhafte Ergebnis wie zuvor erhalten. Keiner der Anhänge wird in der E-Mail angezeigt.
Hat jemand versucht, ACTION_SEND_MULTIPLE
es mit mehreren E-Mail-Anhängen zum Laufen zu bringen?
quelle
Antworten:
Hier ist der Code, den Sie zum Erstellen eines emailIntent benötigen, der mehrere Anhänge enthält.
quelle
emailIntent.setType("text/plain");
. Wenn Sie "Klartext / Text" verwenden, erzwingt Android die Verwendung von GMail als Absender. Wenn Sie jedoch "Text / Klartext" verwenden, wird ein Dialogfeld zur Anwendungsauswahl mit Google Mail, Facebook, Bluetooth usw. angezeigt. Wenn Sie nur E-Mail-Programme vorschlagen möchten Verwenden Sie stattdessen "text / xml".context.startActivity(emailIntent);
das Kontrollkästchen "Standardmäßig für diese Aktion verwenden" ändern, wird im Dialogfeld "Anwendungsauswahl" angezeigt, sodass der Benutzer die Standardanwendung zum Senden der E-Mails mit mehreren Anhängen auswählen kann.ACTION_SEND_MULTIPLE
sollte die Aktion seinund dann
emailIntent.setType("text/plain");
gefolgt von:
Das funktioniert bei mir.
quelle
Dies ist zwar ein alter Thread, aber da er bei Google-Suchanfragen oben angezeigt wird, möchte ich einen kleinen Hinweis hinzufügen, um ihn zu vervollständigen. Daher bin ich darauf gestoßen.
Es ist erforderlich, die angehängten Dateien für die E-Mail-Aktivität lesbar zu machen, da sie sonst nicht angehängt werden. Also musst du irgendwo anrufen
quelle
Hier habe ich ein großartiges Beispiel gefunden: http://www.blackmoonit.com/2010/02/filebrowser-send-receive-intents/
Sie müssen verwenden
quelle
Verwenden
PutParcelableArrayListExtra(Intent.ExtraStream, uris)
Sie für mehrere Anhänge, wenn die Variable uris eine ist.List<IParcelable>().
Hier ein Beispiel:Hoffe das hilft ;)
quelle