Прикрепите несколько файлов через Android Intent, работает с одним файлом, но не с несколькими - PullRequest
2 голосов
/ 05 июня 2019

Если я строю намерение только с одним приложенным файлом, используя простое:

intent.putExtra(Intent.EXTRA_STREAM, detailsuri);

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

intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);

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

Чего мне не хватает?Почему я не могу прикрепить несколько файлов?

File outputDir = controller.getDocumentStorageDir();

String jsontext = buildDbText();

File dbfile = new File(outputDir, "db.json");
FileWriter writer = new FileWriter(dbfile);
writer.write(jsontext);
writer.close();

Uri jsondburi = Uri.fromFile(dbfile);

String appdetails = buildDetailsText();

File detailsfile = new File(outputDir, "details.txt");
FileWriter writer = new FileWriter(detailsfile);
writer.write(appdetails);
writer.close();

Uri detailsuri = Uri.fromFile(detailsfile);


Intent intent = new Intent(Intent.ACTION_SENDTO);

intent.setData(Uri.parse("mailto:")); // only email apps should handle this
intent.putExtra(Intent.EXTRA_EMAIL, new String[] { custsupportEmail });
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, emailbody);

intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

ArrayList<Uri> uris = new ArrayList<>();
uris.add(detailsuri);
uris.add(jsondburi);
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);

startActivity(intent);

1 Ответ

0 голосов
/ 05 июня 2019

W / Bundle: ключ android.intent.extra.STREAM ожидаемый Parcelable, но значение было java.util.ArrayList. Возвращено значение по умолчанию.

...