0

I want to add some photo files to an e-mail intent. The intent is starting normally.

Problem: The attachment is not showing up e.g. in the GMail application. I do not receive any error message. Where could be the issue?

I have changed my code along with the suggestions in this post but my code still does not seem to work.

The file path that I receive from the photo object: file:///storage/emulated/0/Pictures/SMSCloudImages/IMG_20161127_121011.jpg It should be a correct path because I can show the images in a gallery.

   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);
Community
  • 1
  • 1
jublikon
  • 3,427
  • 10
  • 44
  • 82

2 Answers2

0

This is the code I use :

//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 :"));
Thorvald
  • 3,424
  • 6
  • 40
  • 66
0

Remember to add the correct permissions to the android manifest (read AND write):

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
jublikon
  • 3,427
  • 10
  • 44
  • 82