Проблема множественного вложения электронной почты Android в HTC Thunderbolt - PullRequest
24 голосов
/ 27 февраля 2012

У меня здесь странная ситуация.

Я пытаюсь отправлять электронные письма с несколькими вложениями, используя следующий фрагмент кода.

Intent emailIntent = new Intent( android.content.Intent.ACTION_SEND_MULTIPLE );
// emailIntent.setType( "plain/text" );
emailIntent.setType( "application/octet-stream" );
...
....
emailIntent.putParcelableArrayListExtra( Intent.EXTRA_STREAM, uris );

Это работает нормально, и механизм неявных намерений показывает,множество опций, таких как Gmail, Skype, обмен сообщениями и т. д.

Проблема в том, что почтовый клиент по умолчанию не отображается в HTC Thunderbolt (но работает на других устройствах, включая HTC Incredible S).

Если я пытаюсь отправить одно вложение, используя Intent.ACTION_SEND, почтовый клиент по умолчанию показывает .Я попытался установить тип содержимого: text / plain, appliation / octet-stream, message / rfc282 и т. Д., Но ни один из них не работает.

Что мне здесь не хватает?

Ответы [ 4 ]

1 голос
/ 03 апреля 2014

У меня была та же проблема, я исправил ее, используя http Mime Library для составной сущности.

вот ссылка на файл.http://hc.apache.org/httpcomponents-client-4.3.x/httpmime/apidocs/org/apache/http/entity/mime/HttpMultipart.html

0 голосов
/ 18 декабря 2014

Попробуй это.Я думаю, что это будет работать.

final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
emailIntent.setType("plain/text");

ArrayList<Uri> uris = new ArrayList<Uri>();

String[] filePaths = new String[] {image1 Path,image2 path};
for (String file : filePaths) {
    File fileIn = new File(file);
    Uri u = Uri.fromFile(fileIn);
    uris.add(u);
}

if ( !(app_preferences.getString("email", "") == null || app_preferences.getString("email", "").equals(""))) {
    emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {app_preferences.getString("email", "")});    
}

emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject name");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Please find the attachment.");
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);

startActivity(Intent.createChooser(emailIntent, "Email:"));
0 голосов
/ 03 февраля 2014

Это прекрасно работает для меня, обязательно укажите тип сообщения, именно так Android узнает, какую трансляцию использовать.

     String email = "test@email.com";
    Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
    intent.setType("message/rfc822");
    intent.putExtra(Intent.EXTRA_EMAIL, new String[] {email}); // could have multiple address
    intent.putExtra(Intent.EXTRA_SUBJECT, "Enter your subject here");
    intent.putExtra(Intent.EXTRA_TEXT, "message text as needed");
    ArrayList<Uri> arrayUri = new ArrayList<Uri>();
    arrayUri.add(Uri.parse("file://" + paths[0]));
    arrayUri.add(Uri.parse("file://" + paths[1]));
    intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, arrayUri);
    startActivity(Intent.createChooser(intent, "Any title to show on chooser"));
0 голосов
/ 30 июля 2012

Звучит как ошибка в версии Sense от Thunderbolt.Пользовательские интерфейсы для победы, я прав?

В любом случае, я бы посмотрел, какое приложение на самом деле обрабатывает электронные письма на молнии, и поместил оператор if, чтобы определить, является ли устройство молнией.Если это так, установите целевой класс Intent, какой бы он ни был.Если это не так, делайте то, что вы уже делаете.

...