来自SD卡的图片未附加到电子邮件中

时间:2013-09-08 16:51:46

标签: android

我正在尝试将我的文件系统中的图像附加到我的三星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,但那也行不通。 请更新我犯错的地方。 感谢

1 个答案:

答案 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也是如此。