导出到Gmail

时间:2018-03-15 14:00:55

标签: android android-intent gmail

用户最近开始报告使用Gmail从我的Android应用程序共享文件时出现的问题。收件人将附件清空。我从来没有能够在我的设备上重现,但是他们已经给我发了这样的电子邮件,而且我已经看到了空的附件。

这似乎只发生在 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@domain.com"});
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中包含一些文字) 。如果不添加文本,则会正确发送附件。使用文本时,接收方无法打开它。

1 个答案:

答案 0 :(得分:2)

似乎此错误已在最新版本的Android版Gmail中得到修复:8.3.12.190852125