У меня странная ситуация.
Я пытаюсь отправлять электронные письма с несколькими вложениями, используя следующий фрагмент кода.
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 и т. Д., Но ничего не работает.
Что мне здесь не хватает?
Звучит как ошибка в версии Sense от Thunderbolt. Пользовательские интерфейсы для победы, я прав?
В любом случае, я бы посмотрел, какое приложение на самом деле обрабатывает электронную почту на молнии, и поместил бы оператор if, чтобы определить, является ли устройство молнией. Если это так, установите целевой класс Intent, какой бы он ни был. Если это не так, делайте то, что вы уже делаете.
Это прекрасно работает для меня, обязательно укажите тип сообщения, именно так 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"));