我正在为Android 2.3.3开发一个非常小的应用程序。我想发送一封电子邮件(通过 android 电子邮件应用程序),其中包含 jpeg 图像作为附件,位于相关代码下方(仅使用 sdk 模拟器测试):
public void sendArtwork(View aView){
EditText subj = (EditText)findViewById(R.id.edit_subj);
EditText descr = (EditText)findViewById(R.id.edit_descr);
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.setType("image/jpeg"); // attachment is a jpeg
emailIntent.putExtra(Intent.EXTRA_EMAIL,new String[]{"contribute@unintentional.org"});
emailIntent.putExtra(Intent.EXTRA_SUBJECT,subj.getText().toString()); //get subject from one EditText in the UI
emailIntent.putExtra(Intent.EXTRA_TEXT,descr.getText().toString()); //get body from one EditText in the UI
emailIntent.putExtra(Intent.EXTRA_STREAM, fileURI); // add attachment
startActivityForResult(Intent.createChooser(emailIntent, "Choose Email application:"), EMAIL_CODE);
}
它按预期工作:它打开一个选择器,创建一封包含正确地址、主题、文本和附件的电子邮件并发送。
我唯一无法完成的是为图像设置正确的 mime 类型:附件已正确接收(我可以将其分离到磁盘并打开它)但没有内容类型,因此电子邮件客户端 (Thunderbird) 不显示预览并且无法提供打开它的应用程序。有人对此有建议吗?
----编辑
图像文件发送时没有任何错误:如前所述,如果我将其保存在PC上的磁盘上并使用合适的应用程序(即Picasa)打开它,它会正确显示。
我使用相同的方法来发送电子邮件,并在一些电子邮件客户端的各种版本上进行了测试。甚至Gmail也是不一致的,某些版本设置了附件的MIME类型,而其他版本则忽略了它。我得出的结论是,没有安全的解决方案。至少不是通过使用ACTION_SEND意图。