我正在尝试将我的文件系统中的图像附加到我的三星sIII附加到eclipse上
以下是代码:
String ccs[]={cc.getText().toString()};
String tos[]={to.getText().toString()};
Intent i=new Intent(Intent.ACTION_SEND_MULTIPLE);
i.putExtra(Intent.EXTRA_EMAIL, tos);
i.putExtra(Intent.EXTRA_CC, ccs);
i.putExtra(Intent.EXTRA_SUBJECT,"my mail");
i.setType("image/jpeg");
File ff=new File("/storage/sdcard0/DCIM/Camera/20130609_170758.jpg");
Uri u=null;
if(ff.exists())
{
Toast.makeText(this, "file is there", Toast.LENGTH_SHORT).show();
u=Uri.parse("file:///storage/sdcard0/DCIM/Camera/20130609_170758.jpg");
i.putExtra(Intent.EXTRA_STREAM,u);
}
else
Toast.makeText(this, "no such file", Toast.LENGTH_SHORT).show();
i.putExtra(Intent.EXTRA_TEXT, mess.getText().toString());
//i.setType("message/rfc822");
startActivity(i);
我正在收到该文件存在的问题,但是在显示发送带附件的邮件的屏幕之前,gmail应用程序失败了。 我也试过Uri.fromFile,但那也行不通。 请更新我犯错的地方。 感谢
答案 0 :(得分:0)
首先,永远不会在Android中硬编码路径。大多数Android设备上的/storage/sdcard0/
都会失败,而Android 4.2及平板电脑上的辅助帐户也会失败。使用Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)
查找设备上的照片目录。
其次,绝对使用Uri.fromFile()
,而不是重新硬编码Uri
的字符串表示并解析它。
第三,如果您只发送一张图片,请使用ACTION_SEND
,而不是ACTION_SEND_MULITPLE
。相反,如果您想使用ACTION_SEND_MULTIPLE
,那么EXTRA_TEXT
/ EXTRA_STREAM
需要ArrayList
个附加内容,documented for ACTION_SEND_MULTIPLE
也是如此。