thelongrunsmoke
@thelongrunsmoke
Программист

Как отправить письмо с вложением?

Можно использовать интент с действием ACTION_SENDTO или ACTION_VIEW, в chooser'е будут только почтовые клиенты, но при этом нельзя добавить вложение.
Если использовать ACTION_SEND и MIME message/rfc822 или application/octet-stream, то отображается много лишних приложений, например, телеграмм или гуглдрайв.

Вопрос, как cформировать интент, чтобы были видны только email-клиенты и подхватывались вложения из EXTRA_STREAM. API 16 и выше.
  • Вопрос задан
  • 371 просмотр
Решения вопроса 1
thelongrunsmoke
@thelongrunsmoke Автор вопроса
Программист
Разобрался. Это можно сделать присвоив изначальному интенту экстра с именем Intent.EXTRA_INITIAL_INTENTS и интентом с другим действием. Например, исходный интент ACTION_SEND и EXTRA_INITIAL_INTENTS с ACTION_SENDTO, дадут их пересечение, на чистом андроиде, один gmail.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@mr_serg77
Попробуйте вот так:

//filePath - file at phone.
public void send(String emailTo, String subject, String body, String filePath) {
        Intent email = new Intent(android.content.Intent.ACTION_SEND);
        email.setType("message/rfc822");
        email.putExtra(Intent.EXTRA_EMAIL, new String[]{emailTo});
        email.putExtra(Intent.EXTRA_SUBJECT, subject);
        email.putExtra(Intent.EXTRA_TEXT, body);
        if (filePath != null)
            email.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new StorageFiles(ctx).getFile(filePath)));
        try {
            ctx.startActivity(Intent.createChooser(email, "Choser title"));
        } catch (android.content.ActivityNotFoundException ex) {
            
        }
    }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы