用户最近开始报告使用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和
使用非谷歌电子邮件帐户
相反(即不是Gmail电子邮件地址)。
复制的一个必要条件是
在电子邮件正文中添加一些文本
在发送电子邮件之前手动(仅在意图中包含一些文本是不够的
EXTRA_TEXT
)。如果不添加文本,附件将正确发送。对于文本,接收器无法打开它。