URI intencionado para iniciar la aplicación de Gmail

¿Hay algún URI que pueda apuntar a la aplicación GMAIL en Android y ayudarme a lanzarlo?

Estoy usando esto en mis aplicaciones:

Intent mailClient = new Intent(Intent.ACTION_VIEW); mailClient.setClassName("com.google.android.gm", "com.google.android.gm.ConversationListActivity"); startActivity(mailClient); 

Esto funciona para intentar solo la aplicación de Gmail.

 Intent sendIntent = new Intent(Intent.ACTION_VIEW); sendIntent.setType("plain/text"); sendIntent.setData(Uri.parse("test@gmail.com")); sendIntent.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail"); sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { "test@gmail.com" }); sendIntent.putExtra(Intent.EXTRA_SUBJECT, "test"); sendIntent.putExtra(Intent.EXTRA_TEXT, "hello. this is a message sent from my demo app :-)"); startActivity(sendIntent); 

utilizar para muchos correos electrónicos:

 sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { "test@gmail.com" }); 

para correos electrónicos individuales:

 sendIntent.setData(Uri.parse("test@gmail.com")); 

Puede agregar extra putExtra(Intent.EXTRA..) y cambiar el setType para su propósito. :PAG

Actualización (22/01/14): es importante tener en cuenta que si va a utilizar este código, verifique que el usuario tenga instalado el paquete “com.google.android.gm” en su dispositivo. En cualquier idioma, asegúrese de comprobar nulo en cadenas e inicializaciones específicas.

Por favor, vea Iniciar una aplicación desde otra aplicación en Android

enter image description here

No se recomienda usar el nombre del paquete ya que es un método no documentado. En caso de que el nombre del paquete cambie algún día, el código fallará.

Pruebe este código en su lugar

  Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts( "mailto", "abc@gmail.com", null)); emailIntent.putExtra(Intent.EXTRA_SUBJECT, "This is my subject text"); context.startActivity(Intent.createChooser(emailIntent, null)); 

Ref: http://developer.android.com/reference/android/content/Intent.html#ACTION_SENDTO \

Utilizar esta:

 Intent intent = getPackageManager().getLaunchIntentForPackage("com.google.android.gm"); startActivity(intent); 

Esto podría depender del dispositivo y del nivel de API. Use con cuidado.

No hay Intent documentada y compatible para iniciar Gmail, ¡lo siento!

Más tarde, los requisitos cambiaron para iniciar una “aplicación de correo electrónico”, por lo que el siguiente código básicamente inicia una aplicación de correo electrónico y el usuario tiene que elegir entre las opciones que aparecen.

Entonces, tuve que usar

 Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("plain/text"); intent.putExtra(Intent.EXTRA_SUBJECT, "Emailing link"); intent.putExtra(Intent.EXTRA_TEXT, "Link is \n" + "This is the body of hte message"); startActivity(Intent.createChooser(intent, "")); 

Este truco funciona para TODA la versión (API 3+), así como para texto / simple o texto / html (por sonida ):

 Intent intent = new Intent(android.content.Intent.ACTION_SEND); intent.setType("text/html"); // intent.setType("text/plain"); final PackageManager pm = getPackageManager(); final List matches = pm.queryIntentActivities(intent, 0); ResolveInfo best = null; for (final ResolveInfo info : matches) { if (info.activityInfo.packageName.endsWith(".gm") || info.activityInfo.name.toLowerCase().contains("gmail")) { best = info; break; } } if (best != null) { intent.setClassName(best.activityInfo.packageName, best.activityInfo.name); } intent.putExtra(android.content.Intent.EXTRA_SUBJECT, "YOUR SUBJECT"); intent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml("YOUR EXTRAS")); startActivity(intent); 

Simple y 100% funcional

 Intent intent = new Intent (Intent.ACTION_SEND); intent.setType("message/rfc822"); intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"anyMail@gmail.com"}); intent.putExtra(Intent.EXTRA_SUBJECT, "Any subject if you want"); intent.setPackage("com.google.android.gm"); if (intent.resolveActivity(getPackageManager())!=null) startActivity(intent); else Toast.makeText(this,"Gmail App is not installed",Toast.LENGTH_SHORT).show(); 

Funciona.

 Intent intent = new Intent(Intent.ACTION_SEND); String[] strTo = { getString(R.string.mailto) }; intent.putExtra(Intent.EXTRA_EMAIL, strTo); intent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.mail_subject)); intent.putExtra(Intent.EXTRA_TEXT, getString(R.string.mail_body)); Uri attachments = Uri.parse(image_path); intent.putExtra(Intent.EXTRA_STREAM, attachments); intent.setType("message/rfc822"); intent.setPackage("com.google.android.gm"); startActivity(intent); 

Prueba esto

He intentado con muchas soluciones, pero finalmente obtuve una forma correcta que funciona bien para mí

 try { Intent intent = new Intent (Intent.ACTION_VIEW , Uri.parse("mailto:" + "your_emailid@gmail.com")); intent.putExtra(Intent.EXTRA_SUBJECT, "your_subject"); intent.putExtra(Intent.EXTRA_TEXT, "your_text"); startActivity(intent); } catch(Exception e) { Toast.makeText(Share.this, "Sorry...You don't have any mail app", Toast.LENGTH_SHORT).show(); e.printStackTrace(); } 

Nota

  • Esto abrirá su aplicación de correo instalada ( correo electrónico , Gmail ) para enviar correos en los que puede seleccionar uno de ellos.
  • No use el nombre del paquete directo como (“com.google.android.gm”) porque en el futuro si cambian el nombre del paquete, su aplicación tendrá problemas.

Esta respuesta es antigua, pero aún aparece en la Búsqueda de Google en primera posición.

Por lo tanto, a partir de la documentación de Android, la mejor manera de hacer esto ahora es:

 public void composeEmail(String[] addresses, String subject, Uri attachment) { Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("*/*"); intent.putExtra(Intent.EXTRA_EMAIL, addresses); intent.putExtra(Intent.EXTRA_SUBJECT, subject); intent.putExtra(Intent.EXTRA_STREAM, attachment); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } 

}

Más información se puede encontrar aquí

Verifique el siguiente código para abrir automáticamente el compositor de correo predeterminado.

 try { Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_APP_EMAIL); context.startActivity(intent); } catch (android.content.ActivityNotFoundException anfe) { handleException(); } 

Sí, es código de trabajo perfectamente …

  Intent intent = new Intent(Intent.ACTION_SEND); String[] strTo = { "test@g.com" }; intent.putExtra(Intent.EXTRA_EMAIL, strTo); intent.putExtra(Intent.EXTRA_SUBJECT, "Subject"); intent.putExtra(Intent.EXTRA_TEXT, "Body"); intent.setType("message/rfc822"); intent.setPackage("com.google.android.gm"); startActivity(intent);