usar una recibir intent etiquetas etiqueta español electronico crear correo como boomerang automaticas android email android-intent gmail

una - email intent android



Enviar correo electrónico a través de gmail (6)

Tengo un código de intenciones de incendios para enviar correos electrónicos

Intent i = new Intent(Intent.ACTION_SEND); i.setType("text/plain"); i.putExtra(Intent.EXTRA_EMAIL, new String[] { to }); i.putExtra(Intent.EXTRA_SUBJECT, subject); i.putExtra(Intent.EXTRA_TEXT, msg); try { startActivity(Intent.createChooser(i, "Send mail...")); } catch (android.content.ActivityNotFoundException ex) { Toast.makeText(Start.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show(); }

Pero cuando se dispara esta intención, veo muchos elementos en la lista como aplicación de sms, aplicación de gmail, aplicación de Facebook, etc.

¿Cómo puedo filtrar esto y habilitar solo la aplicación de Gmail (o tal vez solo enviar aplicaciones por correo electrónico)?


Esto se cita del documento oficial de Android, lo he probado en Android 4.4 y funciona perfectamente. Vea más ejemplos en https://developer.android.com/guide/components/intents-common.html#Email

public void composeEmail(String[] addresses, String subject) { Intent intent = new Intent(Intent.ACTION_SENDTO); intent.setData(Uri.parse("mailto:")); // only email apps should handle this intent.putExtra(Intent.EXTRA_EMAIL, addresses); intent.putExtra(Intent.EXTRA_SUBJECT, subject); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }


La respuesta aceptada no funciona en el 4.1.2. Esto debería funcionar en todas las plataformas:

Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts( "mailto","[email protected]", null)); emailIntent.putExtra(Intent.EXTRA_SUBJECT, "EXTRA_SUBJECT"); startActivity(Intent.createChooser(emailIntent, "Send email..."));

Espero que esto ayude.


La respuesta de Igor Popov es 100% correcta, pero en caso de que quiera una opción alternativa, utilizo este método:

public static Intent createEmailIntent(final String toEmail, final String subject, final String message) { Intent sendTo = new Intent(Intent.ACTION_SENDTO); String uriText = "mailto:" + Uri.encode(toEmail) + "?subject=" + Uri.encode(subject) + "&body=" + Uri.encode(message); Uri uri = Uri.parse(uriText); sendTo.setData(uri); List<ResolveInfo> resolveInfos = getPackageManager().queryIntentActivities(sendTo, 0); // Emulators may not like this check... if (!resolveInfos.isEmpty()) { return sendTo; } // Nothing resolves send to, so fallback to send... Intent send = new Intent(Intent.ACTION_SEND); send.setType("text/plain"); send.putExtra(Intent.EXTRA_EMAIL, new String[] { toEmail }); send.putExtra(Intent.EXTRA_SUBJECT, subject); send.putExtra(Intent.EXTRA_TEXT, message); return Intent.createChooser(send, "Your Title Here"); }


Reemplazar

i.setType("text/plain");

con

// need this to prompts email client only i.setType("message/rfc822");


Utilice android.content.Intent.ACTION_SENDTO ( new Intent(Intent.ACTION_SENDTO); ) para obtener solo la lista de clientes de correo electrónico, sin facebook u otras aplicaciones. Solo los clientes de correo electrónico.

No sugeriría que vaya directamente a la aplicación de correo electrónico. Permita que el usuario elija su aplicación de correo electrónico favorita. No lo constriñes.

Si usa ACTION_SENDTO, putExtra no funciona para agregar sujeto y texto a la intención. Use Uri para agregar el tema y el texto del cuerpo.

Ejemplo

Intent send = new Intent(Intent.ACTION_SENDTO); String uriText = "mailto:" + Uri.encode("[email protected]") + "?subject=" + Uri.encode("the subject") + "&body=" + Uri.encode("the body of the message"); Uri uri = Uri.parse(uriText); send.setData(uri); startActivity(Intent.createChooser(send, "Send mail..."));


Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts( "mailto","[email protected]", null)); emailIntent.putExtra(Intent.EXTRA_SUBJECT, "IndiaTV News - Mobile App Feedback"); emailIntent.putExtra(Intent.EXTRA_TEXT,Html.fromHtml(Settings.this.getString(R.string.MailContent))); startActivityForResult(Intent.createChooser(emailIntent, "Send email..."),0);