附件未添加到电子邮件意图中

时间:2016-11-27 11:08:28

标签: android file email android-intent

我想将一些照片文件添加到电子邮件意图中。 意图正常开始。

问题:附件未显示,例如在GMail应用程序中。我没有收到任何错误消息。 问题出在哪里?

我已将此代码与此post中的建议一起更改,但我的代码似乎仍无效。

我从照片对象收到的文件路径:file:///storage/emulated/0/Pictures/SMSCloudImages/IMG_20161127_121011.jpg 它应该是一条正确的路径,因为我可以在图库中显示图像。

   Uri uri = Uri.parse("mailto:" + "someone@mail.com")
                .buildUpon()
                .appendQueryParameter("subject", subject)
                .appendQueryParameter("body", body)
                .build();

        List<Photo> photoList = new ArrayList<>();
        photoList.addAll(databaseHandler.getPhotos(qReport.getId()));

        Intent emailIntent = new Intent(Intent.ACTION_SENDTO, uri);

        Intent intentPick = new Intent();
        intentPick.setAction(Intent.ACTION_PICK_ACTIVITY);
        intentPick.putExtra(Intent.EXTRA_TITLE, getResources().getString(R.string.q_report_launch_mail_text));
        intentPick.putExtra(Intent.EXTRA_INTENT, emailIntent);

        for (Photo photo: photoList) {
            intentPick.putExtra(Intent.EXTRA_STREAM, Uri.parse(photo.getName()));
        }

        this.startActivityForResult(intentPick, REQUEST_CODE_MY_PICK);

2 个答案:

答案 0 :(得分:0)

这是我使用的代码:

//how hany picture you want the user to upload
private static final int SELECT_PICTURE = 1;

public void grabImg(){
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent,
            "Select Picture"), SELECT_PICTURE);
}

Uri uri = null;

protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
        if(resultCode == RESULT_OK){
            Uri selectedImage = imageReturnedIntent.getData();
            uri = selectedImage;

        }
}

//This is triggered on a button click

String subject = Suggest.getText().toString();
            String rating = String.valueOf(RateBar.getRating());
            String to ="xxxxx@mail.com"; //destination
            String message = UserInput.getText().toString();
            String body = message;
            Intent email = new Intent(Intent.ACTION_SEND);
            email.putExtra(Intent.EXTRA_EMAIL, new String[]{to});
            email.putExtra(Intent.EXTRA_SUBJECT, subject);
            email.putExtra(Intent.EXTRA_TEXT, body);
            email.putExtra(Intent.EXTRA_STREAM, uri);
            email.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            //need this to prompts email client only
            email.setType("message/rfc822");

            startActivity(Intent.createChooser(email, "Choose an Email client :"));

答案 1 :(得分:0)

请记住向android清单添加正确的权限(读取和写入):

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />