在我的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()方法但不请求文件类型,只显示名称和文件大小。
感谢
答案 0 :(得分:3)
从android-developer Google Group
交叉发布我的回答如果您愿意推出自己的对话框,可以:
第1步:创建message/rfc822
Intent
,就像您要去的那样
以这种方式发送,并将其与PackageManager
和。一起使用
queryIntentActivities()
找出谁来处理它。
步骤2:创建image/png
Intent
,就像您要发送一样
这样,并将其与PackageManager
和queryIntentActivities()
一起使用
找出谁来处理它。
步骤3:计算这两组活动的交集。
步骤4:使用这些填充AlertDialog
供用户选择。
步骤5:修改image/png
Intent
以添加所选组件
从对话框中,然后在其上调用startActivity()
。
通过指定Intent
中的组件,它将转到那个
特别的活动。这实际上是常规选择器
确实。