Попытка прикрепить файл с SD-карты к электронной почте - PullRequest
69 голосов
/ 26 февраля 2009

Я пытаюсь запустить Intent для отправки электронного письма. Все это работает, но когда я пытаюсь отправить электронное письмо, происходит пара «странных» вещей.

вот код

Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("image/jpeg");
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Photo");
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://sdcard/dcim/Camera/filename.jpg"));
sendIntent.putExtra(Intent.EXTRA_TEXT, "Enjoy the photo");
startActivity(Intent.createChooser(sendIntent, "Email:"));

Так что, если я запускаю, используя контекст меню Gmail, он показывает вложение, позволяет мне указать, кому адресовано письмо, и отредактировать текст и тему. Ничего страшного. Я ударил отправить, и он отправляет. Единственное, вложение НЕ отправляется.

Итак. Я решил, почему бы не попробовать это с контекстным меню электронной почты (для моей резервной учетной записи электронной почты на моем телефоне). Он показывает вложение, но без текста в теле или теме. Когда я отправляю, приложение отправляет правильно. Это привело бы меня к мысли, что что-то не так. Нужно ли мне новое разрешение в Манифесте запустить намерение отправить электронную почту с вложением? Что я делаю не так?

Ответы [ 13 ]

0 голосов
/ 19 декабря 2014
public void sendMail(String path) {
        Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
        new String[] {AppConstant.server_mail});
        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
        "IBPS ERROR Mail");
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,
        "This is an autogenerated mail from IBPS app");
        emailIntent.setType("image/png");
        Uri myUri = Uri.parse("file://" + path);
        emailIntent.putExtra(Intent.EXTRA_STREAM, myUri);
        startActivity(Intent.createChooser(emailIntent, "Send mail..."));
        }
0 голосов
/ 01 июня 2013

Это прекрасно для меня работает: В этом решении Николас создает одну копию внутри папки Cache, и здесь у Gmail есть доступ! http://stephendnicholas.com/archives/974

0 голосов
/ 03 марта 2013

У меня были те же симптомы. В моем случае это было потому, что я изначально сохранял вложение с разрешениями MODE_PRIVATE. Как только я изменил его на MODE_WORLD_READABLE, похоже, GMail смог получить доступ к файлу и правильно отправить вложение.

Подробнее

...