Android: ACTION_SEND_MULTIPLE с com.android.email

Я пытаюсь отправить несколько вложений в Intent в приложение электронной почты (не в приложение Gmail). Я использую:

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
emailIntent.setType("plain/text");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,new String[] { "[email protected]" });
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,"This is an email");
emailIntent.putExtra(Intent.EXTRA_TEXT, "This is the body");

File f1 = null;
File f2 = null;
try {
    f1 = new File("/sdcard/test");
    f2 = new File("/sdcard/test.1");
    FileWriter fw1 = new FileWriter(f1);
    FileWriter fw2 = new FileWriter(f2);
    fw1.write("this is some text");
    fw2.write("this is more text");
    fw1.close();
    fw2.close();
} catch (IOException e) {
    e.printStackTrace();
}

ArrayList<Uri> uris = new ArrayList<Uri>();
uris.add(Uri.fromFile(f1));
uris.add(Uri.fromFile(f2));
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,uris);

startActivity(emailIntent);

Когда Gmail используется для обработки Intent, отображаются оба вложения, и все работает нормально. Когда вместо этого используется приложение электронной почты, вложения не добавляются. При использовании одного Uri в EXTRA_STREAM одно вложение работает, а при использовании ArrayList — нет. Я собрал этот код из других вопросов, заданных здесь, но ни один из них не решает эту проблему. Кто-нибудь может помочь?


person scroogemcduck    schedule 01.04.2011    source источник


Ответы (3)


использовать

emailIntent.setType(" */ * ");

без пробелов

см. здесь ACTION_SEND_MULTIPLE

person Damir Mailybayev    schedule 06.03.2012

Я понимаю, что это довольно поздно, но ваш тип намерения задом наперед. Так должно быть

emailIntent.setType("text/plain");

нет

emailIntent.setType("plain/text");

Я удивлен, что ни один из других ответов не указал на это...

person ArtOfWarfare    schedule 12.12.2012

Вместо

emailIntent.setType("обычный/текст");

использовать

emailIntent.setType("приложение/октет-поток");

Не знаю почему, но у меня работает.

person Krishnendu    schedule 18.07.2011