У меня есть активность, которая запускает намерение электронной почты, передавая список массивов объектов Uri, указывающих на локальные файлы. Это работает, когда имеется небольшое количество файлов, например. 3 или 10. Однако, когда у меня есть 1000+ файлов (суммарно размером 14 мб), активность зависает (что ожидается, много ввода-вывода), однако иногда она зависает бесконечно или когда она возвращает намерение, t запуска.Использование электронной почты для отправки электронной почты с большим количеством вложений зависает/не запускает намерение
Ниже кода (так называемый с помощью AsyncTask) создает список массива из Ури и запускает E-mail Цель:
private Intent createEmailAndSend(List<FilePath> paths) {
Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
emailIntent.setType("message/rfc822");
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Email subject");
ArrayList<Uri> fileUriList = new ArrayList<>();
for (FilePath filePath : paths) {
File file = new File(filePath.getPath());
fileUriList.add(Uri.fromFile(file));
}
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, fileUriList);
startActivity(intent);
}
Тестирование на:
- Genymotion, Android Studio 2 Beta Emulator, Nexus 7 и Nexus 6p
- Android: Минимум 19 (Kitkat), и цель Kitkat
Кто-нибудь знает, что я делаю неправильно?
Спасибо, как уже упоминалось выше, я уже использую AsyncTask, который выполняет код с основного потока.Проблема возникает при вызове startActivity по намерению электронной почты. – WolfBane
, тогда я думаю, вы должны попробовать и посмотреть на сжатие на zip-файл и сделать его одним вложением. – AndroidMechanic
Это не столько висит приложение, понятное, как вы упомянули. Это связано с сбоем приложения при запуске намерения (почтового клиента), что любопытно. Я не получаю никаких исключений или ошибок, приложение терпит неудачу и перезагружается, никаких намеков на то, что пошло не так. – WolfBane