¿Cuál es el propósito de usar Intent.createChooser () en StartActivity () al enviar correo electrónico en Android
Cuando necesitamos enviar un correo electrónico en Android invocaremos una aplicación de correo electrónico registrada usando Intent.ACTION_SEND como a continuación
Intent i = new Intent(Intent.ACTION_SEND); startActivity(Intent.createChooser(i, "Send mail..."));
Mi duda es por qué necesitamos usar Intent.createChooser en startActivity en lugar de usar startActivty(i)
. ¿Hay alguna razón específica para usar Intent.createChooser()
?
- Cómo mostrar la actividad transparente en la otra actividad sin eliminar la actividad anterior
- Abrir varias imágenes en la intención de la galería
- Cómo hacer una llamada telefónica con el altavoz encendido
- Receptor de Android para múltiples acciones?
- Array List Intent extra en Java
- Conexión profunda de Android a una aplicación
- Android Intent Clear No funciona
- ¿Cómo pasar un objeto a otra actividad?
- Cómo iniciar una nueva actividad en android
- Acuerdo de Android con muchas intenciones
- datos putExtra que no pasan entre actividades
- ¿Cómo liberar el recurso de micrófono cuando otra aplicación de Android lo necesita?
- Android google play juegos seleccionar actividad para iniciar cuando se hace clic en la notificación
AFAIK, si utiliza Intent.createChooser
, hay tres diferentes:
-
Puede especificar el título del diálogo del selector para hacerlo más claro.
-
El sistema siempre aparecerá en el cuadro de diálogo del selector, incluso el usuario ha elegido uno predeterminado.
-
Si su intención creada por
Intent.createChooser
no coincide con ninguna actividad, el sistema seguirá apareciendo un diálogo con el título especificado y un mensaje de error.No application can perform this action
. O para la intención normal, puede obtener un error de tiempo de ejecución de Android con:Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent
El selector permite al usuario seleccionar otra aplicación de correo que la predeterminada. Es muy útil si usas gmail normal (privat) y correo electrónico (relacionado con el trabajo) y quieres elegir cuál tomar.
Debe usarse siempre …
Way, pero para otros que se encuentran a través de él, puede establecer el tipo de la intención de la mime tipo de mensajes de correo electrónico, que por lo menos se limita a las aplicaciones que pueden enviar ese tipo de mensaje:
Intent i = new Intent(Intent.ACTION_SEND); i.setType( "message/rfc822"); startActivity(Intent.createChooser(i, "Send mail..."));
Hace que el diálogo del selector sea mucho más limpio.
Si no utiliza createChooser()
, el sistema seguirá presentando el diálogo del selector a menos que el usuario ya haya expresado su decisión sobre el programa instalado para usar para la tarea dada (o retiró su decisión anterior).
Si utiliza createChooser()
, el sistema siempre presentará el diálogo, incluso si ya existe una preferencia expresada.
Así pues, ambos son absolutamente correctos, usted tiene que decidir cuál utilizar en cualquier caso dado. Su kilometraje puede variar, pero básicamente, si ofrece un formato como un texto, una imagen, un video o similar para su visualización o edición, probablemente quiera omitir createChooser()
para que lo que el usuario prefiera pueda comenzar inmediatamente. Por otro lado, si quieres compartir algo que esperas que el usuario maneje con un programa instalado diferente (por ejemplo, enviar un correo electrónico, Facebook, chat, lo que sea) cada vez, probablemente querrá usar createChooser()
para Hacer que sea fácil para su usuario para seleccionar sobre la marcha.
Yo uso personalmente:
try { startActivity(i); } catch (ActivityNotFoundException e){ startActivity(Intent.createChooser(i, null)); }
Por lo que usará el valor predeterminado si el usuario tiene el valor predeterminado, aparecerá la ventana "sin aplicación" si no hay ninguna aplicación. Ambos son felices.
- Android Lollipop Toolbar vs vista personalizada
- La línea punteada no está punteada cuando la aplicación se está ejecutando en un dispositivo Android real