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); }
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.
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.
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"));
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..."));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With