Tenho trabalhado no programa Android para enviar e-mail com um anexo (arquivo de imagem, arquivo de áudio, etc) usando o Intent com ACTION_SEND
. O programa está funcionando quando o email tem um único anexo. Eu costumava Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri)
anexar o arquivo de imagem designado ao e-mail e está funcionando bem, o e-mail pode ser entregue através do Gmail. No entanto, quando tentei anexar várias imagens ao mesmo e-mail, ligando Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri)
várias vezes, não funcionou. Nenhum anexo aparece no e-mail.
Pesquisei a documentação do SDK e o grupo de usuários de programação Android sobre anexos de e-mail, mas não consigo encontrar nenhuma informação relacionada. No entanto, descobri que há outra constante de intent ACTION_SEND_MULTIPLE
(disponível desde o nível 4 da API) que pode atender aos meus requisitos. Com base na documentação do SDK, ele simplesmente afirma que entrega vários dados a outra pessoa, como funciona ACTION_SEND
, exceto que os dados são múltiplos. Mas ainda não consegui descobrir o uso correto para este comando. Tentei declarar a intenção com e ACTION_SEND_MULTIPLE
, em seguida, liguei putExtra(EXTRA_STREAM, uri)
várias vezes para anexar várias imagens, mas obtive o mesmo resultado incorreto de antes, nenhum anexo apareceu no e-mail.
Alguém tentou ACTION_SEND_MULTIPLE
e conseguiu fazer com que funcionasse com vários anexos de e-mail?
fonte
Respostas:
Aqui está o código de que você precisa para criar um emailIntent que contenha vários anexos.
fonte
emailIntent.setType("text/plain");
. Se você usar "texto simples / simples", o Android forçará o uso do GMail como remetente, mas se você usar "texto simples", ele fornecerá uma caixa de diálogo de seleção de aplicativo com Gmail, Facebook, Bluetooth etc. Se você gostaria de propor apenas programas de e-mail use "text / xml" em vez disso.context.startActivity(emailIntent);
a caixa de seleção "Usar por padrão para esta ação" aparecerá na caixa de diálogo do seletor de aplicativos, assim o usuário poderá selecionar o aplicativo padrão para enviar os e-mails com vários anexos.ACTION_SEND_MULTIPLE
deve ser a açãoe depois
emailIntent.setType("text/plain");
Seguido por:
Isso funciona para mim.
fonte
Embora este seja um tópico antigo, mas como é mostrado no topo das pesquisas do google, quero adicionar uma pequena dica para torná-lo completo, portanto, eu tropecei nele.
É necessário tornar os arquivos anexados legíveis para a atividade de correio, caso contrário, eles não serão anexados. Então você tem que ligar para algum lugar
fonte
Aqui encontrei um ótimo exemplo http://www.blackmoonit.com/2010/02/filebrowser-send-receive-intents/
você deve usar
fonte
Para vários anexos, use
PutParcelableArrayListExtra(Intent.ExtraStream, uris)
onde a variável uris é um.List<IParcelable>().
Aqui está um exemplo:Espero que isto ajude ;)
fonte