Pracowałem nad programem na Androida do wysyłania wiadomości e-mail z załącznikiem (plik obrazu, plik audio itp.) Przy użyciu Intent z ACTION_SEND
. Program działa, gdy wiadomość e-mail zawiera jeden załącznik. Kiedyś Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri)
załączałem wyznaczony plik obrazu do poczty i działa dobrze, poczta może być dostarczona przez Gmaila. Jednak gdy próbowałem dołączyć wiele obrazów do tej samej wiadomości, dzwoniąc Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri)
wiele razy, nie udało się. Żaden załącznik nie pojawia się w e-mailu.
Przeszukałem dokumentację SDK i grupę użytkowników programowania na Androida na temat załącznika do wiadomości e-mail, ale nie mogę znaleźć żadnych powiązanych informacji. Jednak odkryłem, że istnieje inna stała intencji ACTION_SEND_MULTIPLE
(dostępna od poziomu API 4), która może spełniać moje wymagania. Opierając się na dokumentacji SDK, po prostu stwierdza, że dostarcza wiele danych komuś innemu, działa tak ACTION_SEND
, jak tylko, że dane są wielokrotne. Ale nadal nie mogłem znaleźć prawidłowego użycia tego polecenia. Próbowałem zadeklarować zamiar za pomocą ACTION_SEND_MULTIPLE
, a następnie dzwoniłem putExtra(EXTRA_STREAM, uri)
wiele razy, aby załączyć wiele obrazów, ale otrzymałem ten sam błędny wynik, jak poprzednio, żaden załącznik nie pojawił się w e-mailu.
Czy ktoś próbował ACTION_SEND_MULTIPLE
i sprawił, że działał z wieloma załącznikami e-mail?
źródło
Odpowiedzi:
Oto kod potrzebny do utworzenia wiadomości e-mail zawierającej wiele załączników.
źródło
emailIntent.setType("text/plain");
. Jeśli używasz „zwykłego / tekstowego”, Android wymusi używanie Gmaila jako nadawcy, ale jeśli użyjesz „tekst / zwykły”, zapewni okno wyboru aplikacji z Gmailem, Facebookiem, Bluetooth itp. Jeśli chcesz zaproponować tylko programy pocztowe zamiast tego użyj „text / xml”.context.startActivity(emailIntent);
pole wyboru „Użyj domyślnie dla tej akcji” pojawi się w oknie wyboru aplikacji, dzięki czemu użytkownik będzie mógł wybrać domyślną aplikację do wysyłania wiadomości e-mail z wieloma załącznikami.ACTION_SEND_MULTIPLE
powinno być działaniemi wtedy
emailIntent.setType("text/plain");
śledzony przez:
To działa dla mnie.
źródło
Chociaż jest to stary wątek, ale ponieważ jest wyświetlany na górze w wyszukiwarkach Google, chcę dodać małą wskazówkę, aby był kompletny, dlatego natknąłem się na niego.
Konieczne jest, aby załączone pliki były czytelne dla aktywności poczty, w przeciwnym razie nie zostaną załączone. Więc musisz gdzieś dzwonić
źródło
Tutaj znalazłem świetny przykład http://www.blackmoonit.com/2010/02/filebrowser-send-receive-intents/
musisz użyć
źródło
W przypadku wielu załączników użyj,
PutParcelableArrayListExtra(Intent.ExtraStream, uris)
gdzie zmienna uris to aList<IParcelable>().
Oto przykład:Mam nadzieję że to pomoże ;)
źródło