У меня та же проблема, я пытаюсь отправить файл, не сохраняя его в файловой системе.
Я попытался добавить дополнительный поток данных, например:
String fileContent = "File Content";
emailIntent.putExtra(Intent.EXTRA_STREAM,
Uri.parse("data://text/plain;base64,"+
_utils.Strings.base64_encode(fileContent)));
Я использовал свой собственный класс для создания контента base64, но я думаю, что он также будет работать с:
http://developer.android.com/reference/android/util/Base64.html
В этом случае это был успех, когда я увидел почтовый файл в моем почтовом клиенте.
Но есть 2 проблемы:
1. Я не знаю, как определить имя для этого файла
2. возникает ошибка, когда я пытаюсь отправить файл и получаю письмо без вложения на другом конце.
ОБНОВЛЕНИЕ 2015-05-13:
Почтовое приложение отображает следующую ошибку для моего атташе:
E/Gmail(11511): java.io.FileNotFoundException: No content provider: data://text/plain;base64,
Я думаю, это означает, что в моем телефоне отсутствует поставщик контента, который может обрабатывать данные.
Поэтому я думаю, что мы должны создать ContentProvider (см .: http://developer.android.com/guide/topics/providers/content-provider-creating.html)
И реализовать
openOutputStream(android.net.Uri)
для возврата содержимого данных URI.