Android: ACTION_SEND_MULTIPLE с com.android.email - PullRequest
3 голосов
/ 01 апреля 2011

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

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
emailIntent.setType("plain/text");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,new String[] { "sample@email.com" });
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 используется для обработки Намерения, он показывает оба приложения, и все работает просто отлично. Когда вместо этого используется приложение электронной почты, вложения не добавляются. При использовании одного Uri в EXTRA_STREAM одно вложение работает, а использование ArrayList - нет. Я собрал этот код из других вопросов, заданных здесь, но ни один из них не решил эту проблему. Кто-нибудь может помочь?

Ответы [ 3 ]

2 голосов
/ 06 марта 2012

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

emailIntent.setType(" */ * ");

без пробелов

см. Здесь ACTION_SEND_MULTIPLE

2 голосов
/ 12 декабря 2012

Я понимаю, что уже довольно поздно, но ваш тип намерений задом наперед. Должно быть

emailIntent.setType("text/plain");

не

emailIntent.setType("plain/text");

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

1 голос
/ 18 июля 2011

вместо

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

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

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

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

...