¿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 ):
- Manera de obtener el nombre de etiqueta localizado de PackageManager
- Cómo averiguar si una llamada de Skype está actualmente activa en Android
- Cómo comprobar si la instalación es de la tienda de aplicaciones de Samsung
- Resolver "Administrador de paquetes ha muerto" RuntimeException
- Cómo detectar nuevas aplicaciones en un dispositivo Android
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?
- Llamar al receptor de difusión al momento de desinstalar la aplicación en android
- ¿Cómo usar el instalador de paquetes predeterminado (Android) al intentar instalar un APK desde otra aplicación?
- Android ocultar / mostrar el icono de la aplicación mediante programación
- Cómo encontrar el nombre del paquete que se ha desinstalado cuando se utiliza Intent.ACTION_PACKAGE_REMOVED
- Cómo establecer mediante programación un bloqueo o un pin para una aplicación
- Obtener minSdkVersion y targetSdkVersion del archivo apk
- Cambiar completamente el nombre del paquete, incluido el dominio de la empresa
- No se pueden obtener filtros de intenciones de un paquete
¿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