¿Cómo puedo crear una intención de lanzar alguna aplicación de correo electrónico?

He encontrado varios temas aquí y en otros lugares sobre la creación de una intención para el envío de correo electrónico y que parece ser bastante sencillo. Estoy buscando una intención de lanzar cualquier cliente de correo electrónico que el usuario pueda tener.

Aquí está el código que he visto para enviar un mensaje de correo electrónico ( publicado solo como referencia, esto no sirve mis necesidades ya que no quiero enviar un mensaje nuevo ):

Intent i = new Intent(Intent.ACTION_SEND); i.setType("text/plain"); i.putExtra(Intent.EXTRA_EMAIL , new String[]{"[email protected]"}); i.putExtra(Intent.EXTRA_SUBJECT, "Subject of the message"); i.putExtra(Intent.EXTRA_TEXT , "Body of the message"); 

Aquí está el código que he puesto para lanzar específicamente el cliente de Gmail por el nombre del paquete:

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

El código anterior funciona, pero no es flexible ya que un usuario puede no estar utilizando Gmail, pero la otra aplicación de correo electrónico incorporada o una aplicación de correo electrónico de terceros. Estoy buscando una intención que traería el selector en este caso por lo que el usuario puede decidir qué aplicación para lanzar a leer correo electrónico.

¿Alguien sabe cómo lograr esto?

¿Alguien sabe cómo lograr esto?

No hay tal Intent – puede decir esto examinando el manifiesto para la aplicación de correo electrónico.

Lo único que puede hacer es construir una lista de clientes de correo electrónico a los que desea enlazar y utilizar el código de PackageManager que muestra más arriba para cada uno.

¿Se puede usar una URL mailto de alguna manera para lograr esto? –Editar– Yo era capaz de lograr esto utilizando el siguiente ejemplo de código:

 mt = MailTo.parse("mailto:[email protected]"); sendIntent = new Intent(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{mt.getTo()}); sendIntent.putExtra(Intent.EXTRA_TEXT, ""); sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Enter a subject"); sendIntent.setType("message/rfc822"); startActivity(Intent.createChooser(sendIntent, "Send a Message:")); 

Otro enfoque podría ser Intent.createChooser (); y dejar que el usuario elija la aplicación correcta.

BTW La lista podría contener no sólo aplicaciones de correo electrónico

  • Obtener una aplicación preferida / predeterminada en Android
  • Obtener iconos de todas las aplicaciones instaladas en android
  • Android: obtención de un APKs minSdkVersion desde Android código
  • Cambiar información de la aplicación de la aplicación del gestor de paquetes en android
  • Android ClassCastException con el tipo en blanco
  • ¿Qué significa esto: Fallo ?
  • Diferencia entre el comando "install" de adb y el comando "pm install"?
  • Android: Cómo obtener una lista de las actividades instaladas, tal y como aparecen en el lanzador, sin duplicados
  • ¿Hay una manera de mantener los meta-datos en el manifiesto de Android privados al paquete?
  • Cómo deshabilitar mediante programación aplicaciones sin root?
  • Desactivar las notificaciones de una aplicación mediante programación en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.