Я работал над программой Android для отправки электронного письма с вложением (файл изображения, звуковой файл, и т.д.) использование Намерения с ACTION_SEND
. Программа работает, когда электронная почта имеет единственное вложение. Я использовал Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri)
для присоединения обозначенного файла изображения к почте и это хорошо работает, почта может быть поставлена через Gmail. Однако, когда я пытался присоединить повторные изображения к той же почте путем вызова Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri)
многократно, этому не удалось работать. Ни одно из вложения не обнаруживается в электронном письме.
Я искал документацию SDK и Android, программируя группу пользователей о почтовом вложении, но не могу найти связанную информацию Однако, я обнаружил, что существует другая поглощенная константа ACTION_SEND_MULTIPLE
(доступный начиная с уровня API 4), который мог бы отвечать моему требованию. На основе документации SDK это просто указывает, что поставляет несколько данных кому-то еще, это работает как ACTION_SEND
, кроме данных несколько. Но я все еще не мог выяснить корректное использование для этой команды. Я пытался объявить намерение с ACTION_SEND_MULTIPLE
, затем звоните putExtra(EXTRA_STREAM, uri)
многократно для присоединения повторных изображений но я получил тот же ошибочный результат точно так же, как прежде, ни одно из вложения не обнаруживается в электронном письме.
Имеет любого, которым судят ACTION_SEND_MULTIPLE
и добрался, это работающий с несколькими посылает вложение по электронной почте?
Здесь я нашел отличный пример http://www.blackmoonit.com/2010/02/filebrowser-send-receive-intents/
, вы должны использовать
final Intent aIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
aIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,theUris);
aIntent.setType(theOverallMIMEtype);
Вот код, необходимый для создания emailIntent, содержащего несколько вложений.
public static void email(Context context, String emailTo, String emailCC,
String subject, String emailText, List<String> filePaths)
{
//need to "send multiple" to get more than one attachment
final Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
emailIntent.setType("text/plain");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
new String[]{emailTo});
emailIntent.putExtra(android.content.Intent.EXTRA_CC,
new String[]{emailCC});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(Intent.EXTRA_TEXT, emailText);
//has to be an ArrayList
ArrayList<Uri> uris = new ArrayList<Uri>();
//convert from paths to Android friendly Parcelable Uri's
for (String file : filePaths)
{
File fileIn = new File(file);
Uri u = Uri.fromFile(fileIn);
uris.add(u);
}
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
context.startActivity(Intent.createChooser(emailIntent, "Send mail..."));
}