Мое приложение создает письма с вложениями и использует намерение с Intent.ACTION_SEND
для запуска почтового приложения.
Он работает со всеми почтовыми приложениями, которые я тестировал, за исключением нового Gmail 5.0 (он работает с Gmail 4.9), где почта открывается без вложения, показывая ошибку: "Permission denied for the attachment".
Нет никаких полезных сообщений от Gmail о logcat. Я тестировал только Gmail 5.0 на Android KitKat, но на нескольких устройствах.
Я создаю файл для вложения следующим образом:
String fileName = "file-name_something_like_this";
FileOutputStream output = context.openFileOutput(
fileName, Context.MODE_WORLD_READABLE);
// Write data to output...
output.close();
File fileToSend = new File(context.getFilesDir(), fileName);
Я знаю проблемы безопасности с MODE_WORLD_READABLE
.
Я отправляю намерение следующим образом:
public static void compose(
Context context,
String address,
String subject,
String body,
File attachment) {
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.setType("message/rfc822");
emailIntent.putExtra(
Intent.EXTRA_EMAIL, new String[] { address });
emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(Intent.EXTRA_TEXT, body);
emailIntent.putExtra(
Intent.EXTRA_STREAM,
Uri.fromFile(attachment));
Intent chooser = Intent.createChooser(
emailIntent,
context.getString(R.string.send_mail_chooser));
context.startActivity(chooser);
}
Есть ли что-то, что я делаю неправильно при создании файла или отправке намерения? Есть ли лучший способ запустить почтовое приложение со вложением? Альтернативно - кто-то столкнулся с этой проблемой и нашел обходное решение для этого?
Спасибо!