Ошибка Gmail Невозможно прикрепить файл

Я пытаюсь отправить файл PDF по электронной почте с помощью Gmail. Однако приложение Gmail показывает тост:

Не удалось прикрепить файл

Файл PDF не поврежден и успешно создан в каталоге кеша приложения.

Код: (Пожалуйста, прокомментируйте ниже, если вам нужен код на Java.):

    val photoURI: Uri = FileProvider.getUriForFile(this, "com.packagename.provider",
            File(this.cacheDir.path + "/Report.pdf"))

    val emailIntent = Intent(Intent.ACTION_SENDTO)
    emailIntent.data = Uri.parse("mailto:")
    emailIntent.putExtra(Intent.EXTRA_STREAM, photoURI)
    emailIntent.putExtra(Intent.EXTRA_EMAIL, arrayOf("[email protected]"))
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, "subject")
    emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
    emailIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
    startActivity(emailIntent)

Пожалуйста помоги


person Malwinder Singh    schedule 08.12.2017    source источник
comment
какой размер файла PDF?   -  person android_Muncher    schedule 08.12.2017
comment
менее 1 МБ.   -  person Malwinder Singh    schedule 08.12.2017
comment
У Gmail есть разрешение на чтение хранилища?   -  person android_Muncher    schedule 08.12.2017
comment
Вам также необходимо дать пользователю разрешение через файл манифеста ‹uses-permission android:name=android.permission.WRITE_EXTERNAL_STORAGE/›   -  person Ratilal Chopda    schedule 08.12.2017
comment
Да, у него есть разрешение на хранение.   -  person Malwinder Singh    schedule 08.12.2017
comment
Но я сохранил файл в кеше и разрешил клиенту доступ к нему через FileProvider. Зачем нужно разрешение?   -  person Malwinder Singh    schedule 08.12.2017
comment
@MalwinderSingh Привет! У меня такая же проблема. Подскажите, пожалуйста, как вы решили эту проблему?   -  person V.March    schedule 17.07.2018
comment
@V.March Вы можете использовать API Gmail для Android.   -  person Malwinder Singh    schedule 25.07.2018


Ответы (1)


Согласно документации Android, вам необходимо использовать действие намерения ACTION.SEND в конструкторе намерения для вложений. Общие намерения — документация по Android

ACTION_SENDTO (без вложений) или ACTION_SEND (для одного вложения) или ACTION_SEND_MULTIPLE (для нескольких вложений)

person Pratik Banodkar    schedule 17.02.2019