Gmail 不会从我在 Android 上的应用程序发送附件

Posted

技术标签:

【中文标题】Gmail 不会从我在 Android 上的应用程序发送附件【英文标题】:Gmail won't send attachment from my application on Android 【发布时间】:2011-06-29 08:33:41 【问题描述】:

我正在尝试向我的 android 应用程序添加电子邮件功能。我实际上要做的是使用 ACTION_SEND 意图发送一个包含表示某些应用程序数据的 json 字符串的文件。问题是在我的设备上,一个带有 Froyo 的 HTC Desire,Gmail 发送实际的电子邮件,而不是附件,即使我在 Gmail 应用程序启动时看到附件作为附件。但是,在模拟器上,使用默认的电子邮件应用程序,这工作得很好。如果我使用 ASTRO 文件管理器等应用程序直接从 SD 卡发送附件并使用默认建议的 mime 类型,这也适用。 有人遇到过类似的事情吗? 我的代码如下所示:

Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("application/sal");
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "shopping list");
Log.d(TAG, "attachment file: " + Uri.parse("file:/" + fileWithPath));
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:/" + fileWithPath));

我也尝试了多种 mime 类型,例如具有相同结果的 application/json 或 text/plain。

【问题讨论】:

fileWithPath 等于什么?它是硬编码的还是动态生成的?如果硬编码并且在 SDCard 上,那么对应 SDCard 根路径的部分在不同设备上可能会有所不同。 感谢 Arhimed 的建议,确实 sdcard 部分被硬编码为 /mnt/sdcard/sa 之类的东西,这将是 sdcard 上我想从中读取文件的文件夹以及我之前保存它的位置发送附件。但是,我使用 Astro 文件管理器进行了检查,文件被写入该位置,并且该位置在我的设备上指定。顺便说一句,有没有办法以编程方式找出 sdcard 安装在设备上的路径? 【参考方案1】:

显然,在 Android 版 Gmail 上以 file:// 开头的 URI 存在一些问题,因此我找到了一些关于如何处理附件和文件的建议,这些建议表明应用程序内部的内容提供程序可以访问文件应该使用内容。可以在 OI FileManager here 和 here 中找到实现类似功能的示例。我查看了前面提到的源代码,并尝试实现我自己的内容提供程序来访问我想要附加的文件,并且它有效。 我希望这些信息对可能尝试此操作的其他人有所帮助。

【讨论】:

以上是关于Gmail 不会从我在 Android 上的应用程序发送附件的主要内容,如果未能解决你的问题,请参考以下文章

电子邮件不会从 Mandrill 发送到 Gmail

Android : 如何使用我的应用程序中的 whatsapp、facebook、gmail 等发送应用程序邀请消息

为什么我无法从我在GCP中托管的应用使用Gmail SMTP发送电子邮件?

从 Android 上的 gmail 应用程序下载附件的意图过滤器

通过我在 android 上的应用程序共享 pdf 文件

无法在 Outlook Android 中设置收件人