If you are going to use ACTION_SENDTO
, the Uri
should use the mailto:
or smsto:
scheme. So, try mailto:abcd@gmail.com
.
ACTION_SENDTO does not work
-
11-12-2021 - |
Question
I want to send out an email from my app. So I used the following code.
String uriText = "abcd@gmail.com" + "?subject=" + URLEncoder.encode("Subject") + "&body=" + URLEncoder.encode("some text here");
Uri uri = Uri.parse(uriText);
Intent sendIntent = new Intent(Intent.ACTION_SENDTO);
sendIntent.setData(uri);
startActivity(Intent.createChooser(sendIntent, "Send Email"));
I have configured both my Gmail and EMail applications. I tested on my Nexus S (JellyBean) and HTC T-Mobile G2 (GingerBread). Both of them shows "No apps can perform this action.".
Does anyone have idea what's wrong here?
Solution
OTHER TIPS
if you are using Intent.setData
for sending email then change your code as:
String uriText = "mailto:someone@example.com" +
"?subject=" + URLEncoder.encode("Subject") +
"&body=" + URLEncoder.encode("some text here");
Uri uri = Uri.parse(uriText);
Intent sendIntent = new Intent(Intent.ACTION_SENDTO);
sendIntent.setData(uri);
startActivity(Intent.createChooser(sendIntent, "Send Email"));
Uri should be "mailto"
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:"));
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"abc@gmail.com"});
intent.putExtra(Intent.EXTRA_SUBJECT,"Order summary of Coffee");
intent.putExtra(Intent.EXTRA_TEXT,BodyOfEmail);
if(intent.resolveActivity(getPackageManager())!=null) {
startActivity(intent);
}
The following code worked for me and is a lot more reliable and flexible. Also, it's written in Kotlin :)
fun sendEmail(context: Context, mailTo: String? = null, subject: String? = null, bodyText: String? = null) {
val emailIntent = Intent(Intent.ACTION_SENDTO)
val uri = Uri.parse("mailto:${mailTo ?: ""}").buildUpon() // "mailto:" (even if empty) is required to open email composers
subject?.let { uri.appendQueryParameter("subject", it) }
bodyText?.let { uri.appendQueryParameter("body", it) }
emailIntent.data = uri.build()
try {
context.startActivity(emailIntent)
} catch (e: ActivityNotFoundException) {
// Handle error properly
}
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow