【问题标题】:Send an email in Android selecting only email apps AND specifying attachment mime type在 Android 中发送电子邮件,仅选择电子邮件应用程序并指定附件 mime 类型
【发布时间】:2011-08-16 00:47:15
【问题描述】:

在我的 Android 应用中,我发送带有图片的电子邮件。

使用 Intent 系统发送,我可以做以下两件事之一:

1) 将类型指定为“message/rfc822”,以便选择器中仅显示电子邮件应用程序。

不便之处:我无法指定使用 EXTRA_STREAM 和 Uri 附加的图像的 MIME 类型。许多接收电子邮件应用程序(Gmail、Android 等)将其显示为附加到邮件的未知 binaru“blob”,不知道如何预览它,也不知道如何将其作为附件打开。

2) 将类型指定为(比如)“image/png”。图片已附加,Gmail 等电子邮件客户端可以预览它,并在适当的应用程序中打开附件。

不便之处:对于发送用户,我无法将用户必须在选择器中选择的应用程序列表减少到电子邮件应用程序,并且我的 Android 设备中显示了许多应用程序,其中大多数不是电子邮件应用程序,而不是什么我要。

是否无论如何要指定其“消息/rfc822”电子邮件 Intent 并在 Intent.EXTRA_STREAM 中指定通过 Uri 附加的数据的 MIME 类型?

顺便说一句:我从自己的 ContentProvider 提供文件,并且未调用 getType() 方法(用于确定文件 MIME 类型)。 query() 方法是但不请求文件类型,仅显示名称和文件大小。

谢谢

【问题讨论】:

标签: android email mime


【解决方案1】:

android-developer Google Group 交叉发布我的答案:

如果你愿意推出自己的对话,你可以:

步骤#1:创建message/rfc822Intent,就好像你要 以这种方式发送,并将其与PackageManagerqueryIntentActivities() 找出谁来处理它。

第 2 步:创建 image/png Intent,就像您要发送 这样,并与PackageManagerqueryIntentActivities() 一起使用 找出谁来处理它。

步骤#3:计算这两组活动的交集。

第 4 步:使用它们填充 AlertDialog 供用户选择。

  • 步骤 #4a:如果交叉点有一个匹配项,则跳过此步骤。
  • 步骤#4b:如果交集有零匹配,让用户知道 你不能发送消息。

步骤#5:修改image/png Intent 以添加选定的组件 从对话框中调用startActivity()

通过在Intent中指定组件,它会去那个 特定的活动。这实际上是常规选择器 做。

【讨论】:

  • 谢谢。当我有更多时间时,我可能会沿着这条路走(如果没有其他方法的话)。蓝牙活动总是出现在选择器列表中以发送电子邮件,这有点烦人,我也会将其过滤掉。顺便说一句:我已经实现了我自己的内容提供商的 query() 方法,以向将要发送电子邮件的(电子邮件)应用程序提供 DISPLAY_NAME 和 SIZE。我发现如果我在显示名称的末尾添加一个有效的图像文件扩展名(例如“.png”),那么大多数电子邮件客户端都会预览它并打开图像查看器来查看附件。不是万无一失,但有帮助。
猜你喜欢
  • 2016-09-08
  • 2011-07-22
  • 1970-01-01
  • 2016-11-30
  • 2020-06-30
  • 1970-01-01
  • 2012-06-12
  • 2018-05-10
  • 2012-01-07
相关资源
最近更新 更多