在Android中发送电子邮件,仅选择电子邮件应用并指定附件mime类型

时间:2011-04-30 11:24:36

标签: android email mime

在我的Android应用程序中,我发送附有图像的电子邮件。

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

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

不便:我无法使用EXTRA_STREAM和Uri指定我附加的图像的mime类型。许多接收电子邮件应用程序(Gmail,Android等)都会将此信息显示为附加到邮件中的未知二进制“blob”,不知道如何预览它,也不知道如何将其作为附件打开。

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

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

是否有指定其“message / rfc822”电子邮件Intent AND指定在Intent.EXTRA_STREAM中通过Uri附加的数据的MIME类型?

BTW:我从我自己的ContentProvider提供文件,并且没有调用getType()方法(用于确定文件MIME类型)。 query()方法但不请求文件类型,只显示名称和文件大小。

感谢

1 个答案:

答案 0 :(得分:3)

android-developer Google Group

交叉发布我的回答

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

第1步:创建message/rfc822 Intent,就像您要去的那样 以这种方式发送,并将其与PackageManager和。一起使用 queryIntentActivities()找出谁来处理它。

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

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

步骤4:使用这些填充AlertDialog供用户选择。

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

步骤5:修改image/png Intent以添加所选组件 从对话框中,然后在其上调用startActivity()

通过指定Intent中的组件,它将转到那个 特别的活动。这实际上是常规选择器 确实。