У меня есть средство выбора файлов, которое предоставляет мне URI выбранных файлов (может быть несколько или один), теперь я хочу отправить эти выбранные файлы (изображения и PDF-файлы) в приложение Gmail с использованием намерения. Я пробовал все, что доступно в сети, для намеренной отправки вложений, но безуспешно. Пожалуйста, помогите мне разобраться в этой штуке, застрял здесь несколько дней. URI, возвращенный в HashMap: uriMap
Gmail Intent
Intent emailSelectorIntent = new Intent(Intent.ACTION_SENDTO);
emailSelectorIntent.setData(Uri.parse("mailto:"));
Log.d("mailList", Arrays.toString(subarray));
final Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
emailIntent.putExtra(Intent.EXTRA_EMAIL, subarray);
emailIntent.putExtra(Intent.EXTRA_SUBJECT,(CharSequence) eventName.getText().toString());
ArrayList<String> bodyList = new ArrayList<>();
String body = eventDesc.getText().toString() + " at " + eventVenue.getText().toString() + ", " + hourSelect + ":" + minuteSelect;
bodyList.add(body);
emailIntent.putExtra(Intent.EXTRA_TEXT, bodyList);
emailIntent.setSelector(emailSelectorIntent);
emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
emailIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
ArrayList<Uri> uris = new ArrayList<Uri>();
Iterator iterator = uriMap.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry mapElement = (Map.Entry) iterator.next();
uris.add((Uri) mapElement.getValue());
}
if (uris.size() != 0)
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
startActivity(Intent.createChooser(emailIntent, "Choose an email application..."));
OnActivityResult code
, если выбрано несколько файлов
for (int i = 0; i < data.getClipData().getItemCount(); i++) {
Uri uri = data.getClipData().getItemAt(i).getUri();}
иначе, если один файл выбран
Uri uri;
uri = data.getData();
Ошибка LogCat
2020-08-01 16:56:16.414 30575-30575/? E/Gmail: ComposeActivity:Error adding attachment
gon: SecurityException when openAssetFileDescriptor.
at goo.a(PG:5)
at goo.a(PG:45)
at dvt.a(PG:137)
at duz.run(PG:2)
at dvt.a(PG:176)
at dvt.a(PG:144)
at dvt.a(PG:443)
at drq.a(Unknown Source:24)
at bbkz.a(Unknown Source:19)
at bdvu.a(Unknown Source:2)
at bdvw.run(PG:9)
at bdzb.run(Unknown Source:7)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
at bbja.run(PG:2)
at aqsr.run(Unknown Source:18)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7397)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:935)
Помощь приветствуется.
Заранее спасибо.