Пустое вложение при экспорте в Gmail

Недавно пользователи начали сообщать о проблемах при совместном использовании файлов из моего приложения для Android с помощью Gmail. Вложение получатель получает пустым. Мне никогда не удавалось воспроизвести на своих устройствах, но они прислали мне такие электронные письма, и я видел пустое вложение.

Похоже, это происходит исключительно на Android 7 и выше.

Вот как я делюсь файлом в своем приложении:

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setClassName(activityInfo.packageName, activityInfo.name);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"});
intent.putExtra(Intent.EXTRA_TEXT, "Some text");
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
Uri uri = FileProvider.getUriForFile(context, getFileProviderAuthority(), textFile);
intent.putExtra(Intent.EXTRA_STREAM, uri);
context.grantUriPermission(activityInfo.packageName, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
context.startActivity(intent);

На данный момент я не мог понять, почему это происходит с некоторыми пользователями, а с другими - нет. У большинства из них установлена ​​последняя версия Gmail.

Я заметил одну вещь: когда я смотрю на исходное письмо, которое я получаю от этих пользователей, письма от проблемных пользователей выглядят следующим образом:

----_com.android.email_1901922805148181 
Content-Type: text/html; charset=utf-8 
Content-Transfer-Encoding: base64

*encoded email body*

----_com.android.email_1901922805148181  
Content-Type: text/plain;  name = "filename.txt"  
Content-Transfer-Encoding: base64 
Content-Disposition: attachment;  filename = "filename.txt";  size=262
----_com.android.email_1901922805148181--

А вот от обычных пользователей выглядят так:

--001a1145af74a967fe0566ff756c 
Content-Type: text/html; charset = "UTF-8" 
Content-Transfer-Encoding: quoted-printable

*email body*

--001a1145af74a967fe0566ff756c--
--001a1145af74a968010566ff756e 
Content-Type: text/plain; charset = "US-ASCII"; name = "log.txt" 
Content-Disposition: attachment; filename = "log.txt" 
Content-Transfer-Encoding: base64 
Content-ID: <1620c22fd58144d0cc61> X-Attachment-Id: 1620c22fd58144d0cc61

*encoded attachment*

--001a1145af74a968010566ff756e--

Обновлять

Мы смогли воспроизвести эту проблему из любого приложения, которое может обмениваться файлами через намерение ACTION_SEND, выбрав вместо этого Gmail и с использованием учетной записи электронной почты, отличной от Google (т.е. не адрес электронной почты Gmail).

Необходимым условием для воспроизведения является добавить текст в тело письма вручную перед отправкой электронного письма (недостаточно иметь некоторый текст в намерении EXTRA_TEXT). Без добавления текста вложение отправляется правильно. С текстом он не может быть открыт получателем.

Убедитесь, что вы выполнили эти шаги: developer.android.com/training/secure-file-sharing/…

HedeH 15.03.2018 15:43

Да, я указал поставщика файлов

guillaume-tgl 15.03.2018 15:52

Не знаю, причина ли это, но context.grantUriPermission(activityInfo.packageName, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION); довольно странный. Вместо этого я бы использовал intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); . `

greenapps 15.03.2018 16:09

Вот что рекомендует документация Android: developer.android.com/reference/android/support/v4/content/…

guillaume-tgl 15.03.2018 16:19

Может быть. Просто попробуйте! Вы не знаете, что делать еще не так ли? У меня таких проблем нет.

greenapps 15.03.2018 16:35

Спасибо за отправку, мы тоже это видим

Alex Black 21.03.2018 02:49

Нам не удалось воспроизвести это даже с учетной записью IMAP. Есть ли у вас какие-либо другие идеи? Мы действительно хотели бы иметь возможность воспроизвести его.

Alex Black 21.03.2018 18:17

Используйте Android 7, настройте учетную запись Yahoo или Outlook в настройках учетных записей и удалите все учетные записи Google на устройстве. Экспортируйте файл из любого приложения в Gmail, добавьте текст в основной текст и отправьте. Не стесняйтесь присылать мне видео, если оно все еще не работает, чтобы узнать, не упустил ли я что-то :)

guillaume-tgl 21.03.2018 19:12

Спасибо, попробуем! Вы нашли решение или обходились? Было бы очень полезно, если бы вы могли написать мне, Алекс в invoicesimple dot com

Alex Black 21.03.2018 21:51

Спасибо, Гилаумме, теперь мы можем воспроизвести его, уф. Похоже, это ошибка Gmail, а? Не уверен, есть ли обходной путь или нет.

Alex Black 21.03.2018 22:06
4
10
282
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, что эта ошибка была исправлена ​​в последней версии Gmail для Android: 8.3.12.190852125.

Другие вопросы по теме