Проблема множественного вложения электронной почты Android в HTC Thunderbolt
У меня здесь странная ситуация.
Я пытаюсь отправить электронное письмо с несколькими вложениями, используя следующий фрагмент кода.
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 ответа
У меня была та же проблема, я исправил ее, используя http Mime Library для многочастной формы.
вот ссылка на файл. http://hc.apache.org/httpcomponents-client-4.3.x/httpmime/apidocs/org/apache/http/entity/mime/HttpMultipart.html
Попробуй это. Я думаю, что это будет работать.
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:"));
Похоже, ошибка в версии Sense Thunderbolt. Пользовательские интерфейсы для победы, я прав?
В любом случае, я бы посмотрел, какое приложение на самом деле обрабатывает электронные письма на молнии, и поместил бы оператор if, чтобы определить, является ли устройство молнией. Если это так, установите целевой класс Intent, какой бы он ни был. Если это не так, делай то, что ты уже делаешь.
Это прекрасно работает для меня, обязательно укажите тип сообщения, именно так Android OS знает, какую трансляцию использовать.
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"));