Мое приложение содержит файл PDF в папке ресурсов. Моя цель состоит в том, чтобы создать намерение электронной почты, которое открывает электронное письмо с этим приложенным PDF. Это работает, и электронное письмо открывается и показывает приложенный PDF с правильным именем и размером. Но при отправке электронного письма, PDF не получен. Единственное, что отображается в logcat после отправки электронного письма:
E/Gmail: gti:Cannot find size of file.
, что странно, потому что я определенно могу видеть вложение там с правильным размером в черновике письма.
Вотмой код:
android-manfiest.xml:
<provider
android:name="[my.package.name].core.helpers.utils.AssetsProvider"
android:authorities="[my.package.name].fileprovider2"
android:exported="true"
android:grantUriPermissions="true" />
AssetsProvider.kt
class AssetsProvider : ContentProvider() {
override fun openAssetFile(uri: Uri, mode: String): AssetFileDescriptor? {
val am = context!!.assets
val fileName = uri.lastPathSegment!!
var afd: AssetFileDescriptor? = null
try {
afd = am.openFd(fileName)
} catch (e: IOException) {
e.printStackTrace()
}
// Confirms non null result
Log.v("debug", "afd=" + (afd?.toString() ?: "null"))
return afd
}
override fun onCreate(): Boolean {
return true
}
override fun insert(uri: Uri, values: ContentValues?): Uri? {
return null
}
override fun query(
uri: Uri,
projection: Array<String>?,
selection: String?,
selectionArgs: Array<String>?,
sortOrder: String?
): Cursor? {
return null
}
override fun update(
uri: Uri,
values: ContentValues?,
selection: String?,
selectionArgs: Array<String>?
): Int {
return 0
}
override fun delete(uri: Uri, selection: String?, selectionArgs: Array<String>?): Int {
return 0
}
override fun getType(uri: Uri): String? {
return null
//return "application/pdf"
}
}
И создание Intent
(код Java):
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("application/pdf");
Uri assetUri = Uri.parse("content://[my.package.name].fileprovider2/[pdf_filename].pdf");
intent.putExtra(Intent.EXTRA_STREAM, assetUri);
activity.startActivityForResult(Intent.createChooser(intent, "Sending PDF..."), requestCode);
Итак, как я уже сказал, он открывает gmail для создания нового электронного письма, там есть вложение в формате PDF, правильное имя файла и размер, но при нажатии кнопки отправки электронное письмо проходит без каких-либо вложений, и я получаю E/Gmail: gti:Cannot find size of file.
в logcat при нажатии send.
Почему вложение не отправляется?