Reputation: 856
I want to send out an email from my app. So I used the following code.
String uriText = "[email protected]" + "?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?
Upvotes: 6
Views: 5385
Reputation: 76699
I've tried all day to open the com.android.mms/.ui.ComposeMessageActivity
(Huawei).
While it's indeed pretty simple and it seemingly does not need any special handling:
try { startActivity(Intent(Intent.ACTION_SENDTO, Uri.parse("mmsto:"))) }
catch (e: Exception) { Log.e(LOG_TAG, "Exception: ${e.message}") }
Upvotes: 0
Reputation: 81
Uri should be "mailto"
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:"));
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"});
intent.putExtra(Intent.EXTRA_SUBJECT,"Order summary of Coffee");
intent.putExtra(Intent.EXTRA_TEXT,BodyOfEmail);
if(intent.resolveActivity(getPackageManager())!=null) {
startActivity(intent);
}
Upvotes: 1
Reputation: 1420
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
}
}
Upvotes: -1
Reputation: 132982
if you are using Intent.setData
for sending email then change your code as:
String uriText = "mailto:[email protected]" +
"?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"));
Upvotes: 9
Reputation: 1006954
If you are going to use ACTION_SENDTO
, the Uri
should use the mailto:
or smsto:
scheme. So, try mailto:[email protected]
.
Upvotes: 13