0

我正在尝试将我的文件系统中的图像附加到附加到 eclipse 的三星 sIII 上

以下是代码:

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 但这也不起作用。请更新我犯错的地方。谢谢

4

1 回答 1

0

首先,永远不要在 Android 中硬编码路径。您/storage/sdcard0/将在大多数 Android 设备上失败,以及 Android 4.2+ 平板电脑上的辅助帐户。用于Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)查找设备上的照片目录。

其次,绝对使用Uri.fromFile(),而不是重新硬编码 a 的字符串表示Uri并解析它。

第三,如果您只发送一张图片,请使用ACTION_SEND,而不是ACTION_SEND_MULITPLE。相反,如果您想使用ACTION_SEND_MULTIPLE,那么EXTRA_TEXT/EXTRA_STREAM需要是ArrayList额外的,如.ACTION_SEND_MULTIPLE

于 2013-09-08T16:55:47.093 回答