Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ACTION_SENDTO for sending an email

I am experiecing "This action is not currrently supported" error condition when execute the following code snippet in Android 2.1. What is wrong with the snippet?

public void onClick(View v) {   Intent intent = new Intent(Intent.ACTION_SENDTO);   Uri uri = Uri.parse("mailto:[email protected]");   intent.setData(uri);   intent.putExtra("subject", "my subject");   intent.putExtra("body", "my message");   startActivity(intent); } 
like image 363
Sang Shin Avatar asked Jun 28 '10 13:06

Sang Shin


People also ask

What is intent action send?

When you construct an intent, you must specify the action you want the intent to perform. Android uses the action ACTION_SEND to send data from one activity to another, even across process boundaries. You need to specify the data and its type.

What is Android intent Action view?

An intent allows you to start an activity in another app by describing a simple action you'd like to perform (such as "view a map" or "take a picture") in an Intent object.


2 Answers

If you use ACTION_SENDTO, putExtra() does not work to add subject and text to the intent. Use setData() and the Uri tool add subject and text.

This example works for me:

// ACTION_SENDTO filters for email apps (discard bluetooth and others) String uriText =     "mailto:[email protected]" +      "?subject=" + Uri.encode("some subject text here") +      "&body=" + Uri.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"));  
like image 131
Pierangelo Dal Ben Avatar answered Oct 03 '22 03:10

Pierangelo Dal Ben


Actually I found a way where the EXTRAs work. This is a combination of an answer I found here regarding ACTION_SENDTO

http://www.coderanch.com/t/520651/Android/Mobile/no-application-perform-action-when

and something for HTML which I found here:

How to send HTML email (but the variant of how to use ACTION_SENDTO in this HTML post didn't work for me - I got the "action not supported" which you are seeing)

    // works with blank mailId - user will have to fill in To: field     String mailId="";     // or can work with pre-filled-in To: field // String mailId="[email protected]"; Intent emailIntent = new Intent(Intent.ACTION_SENDTO,                                      Uri.fromParts("mailto",mailId, null));  emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject text here");      // you can use simple text like this // emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,"Body text here");      // or get fancy with HTML like this emailIntent.putExtra(              Intent.EXTRA_TEXT,              Html.fromHtml(new StringBuilder()                  .append("<p><b>Some Content</b></p>")                  .append("<a>http://www.google.com</a>")                  .append("<small><p>More content</p></small>")                  .toString())              ); startActivity(Intent.createChooser(emailIntent, "Send email...")); 
like image 41
Andy Weinstein Avatar answered Oct 03 '22 03:10

Andy Weinstein