I wish to implement a button that upon pressing it will open the default email client with an attachment file.
I am following this, but am getting an error message on the startActivity, saying it is expecting an activity param while I am giving it an intent. I am using API 21 and Android Studio 1.1.0, so perhaps it has something to do with the comment in the answer provided in the link?
This is my fourth day as Android developer so sorry if I am missing something really basic.
Here is my code:
public void sendFileToEmail(File f){
String subject = "Lap times";
ArrayList<Uri> attachments = new ArrayList<Uri>();
attachments.add(Uri.fromFile(f));
Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, attachments);
intent.setClassName("com.android.email", "com.android.mail.compose.ComposeActivity");
try {
startActivity(intent);
} catch (ActivityNotFoundException e) {
e.printStackTrace();
}
For newer devices you will encounter FileUriExposedException. Here is how to avoid it in Kotlin.
Try to use this.It is working...
Thanks
I think your problem is that you are not using the correct file path.
The following works for me:
You also need to give the user permission via a manifest file like below