代码之家  ›  专栏  ›  技术社区  ›  guillaume-tgl

导出到Gmail时清空附件

  •  4
  • guillaume-tgl  · 技术社区  · 6 年前

    用户最近开始报告使用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 )。如果不添加文本,附件将正确发送。对于文本,接收器无法打开它。

    1 回复  |  直到 6 年前
        1
  •  2
  •   guillaume-tgl    6 年前

    这个bug似乎已经在最新版本的Android Gmail中修复了:8.3.12.190852125