Ответ 1
У меня была такая же проблема, я исправил ее с помощью http Mime Library для многочастной формы.
вот ссылка на файл. http://hc.apache.org/httpcomponents-client-4.3.x/httpmime/apidocs/org/apache/http/entity/mime/HttpMultipart.html
У меня здесь странная ситуация.
Я пытаюсь отправить электронные письма с несколькими вложениями, используя следующий фрагмент кода.
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, Messaging и т.д.
Проблема заключается в том, что почтовый клиент по умолчанию не отображается на HTC Thunderbolt (но работает на других устройствах, включая HTC Incredible S).
Если я попытаюсь отправить одно вложение с помощью Intent.ACTION_SEND
, почтовый клиент по умолчанию появится. Я пробовал устанавливать тип контента в text/plain, appliation/octet-stream, message/rfc282 и т.д., Но никто не работает.
Что мне здесь не хватает?
У меня была такая же проблема, я исправил ее с помощью http Mime Library для многочастной формы.
вот ссылка на файл. http://hc.apache.org/httpcomponents-client-4.3.x/httpmime/apidocs/org/apache/http/entity/mime/HttpMultipart.html
Звучит как ошибка в версии Sunderbolt. Пользовательские пользовательские интерфейсы для победы, я прав?
Во всяком случае, я бы посмотрел, что приложение действительно обрабатывает сообщения электронной почты на thunderbolt и помещает if-statement, чтобы определить, является ли устройство громким ударом. Если это так, задайте целевой класс Intent тем, что есть. Если это не так, сделайте то, что вы уже делаете.
Это отлично работает для меня, не забудьте указать тип сообщения, вот как знает android os, какую трансляцию использовать.
String email = "[email protected]";
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"));
Попробуйте это. Я думаю, что это сработает.
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:"));