Obligar a Android a elegir una aplicación para enviar correos electrónicos

Implementé el envío de correos electrónicos desde mi aplicación.

solía esta pregunta en SO como guía para lograr esto, tenga en cuenta que en las respuestas alguien dijo que usara setType("message/rfc822"); porque filtra todos los demás clientes de correo electrónico que escuchan el ACTION_SEND intención.

Mi problema es que mi galaxy tab 10.1 todavía tiene dos aplicaciones que escuchan la intención, por lo que todavía se abre una ventana emergente que me pregunta qué cliente de correo electrónico quiero usar. (La aplicación gMail o la aplicación de correo electrónico predeterminada). No puedo desinstalar uno, por lo que la lista no aparecerá, pero tampoco quiero hacerlo.

¿Hay alguna manera de obligar a Android a usar el primero de la lista al instante? Entonces, ¿el usuario puede omitir el cuadro de diálogo emergente?

Aquí está mi código actual:

Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");

i.putExtra(Intent.EXTRA_SUBJECT, context.getString(R.string.notes_from_pf));
i.putExtra(Intent.EXTRA_TEXT  , context.getString(R.string.mail_message));
try {
    startActivity(Intent.createChooser(i, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
    Toast.makeText(context, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
}

preguntado el 12 de junio de 12 a las 12:06

¿Qué te hace pensar que el usuario quiere "el primero de la lista"? -

Además, el código que está utilizando, cortesía de la Intent.createChooser() llamar - es obligando a el usuario tiene que hacer una elección, incluso si configuró un cliente de correo predeterminado anteriormente. ¿Por qué al mismo tiempo obligas al usuario a tomar una decisión y luego te quejas de que el usuario tiene que tomar una decisión? -

@CommonsWare Pasé totalmente por alto que... -

Y así es, ahora solo me preguntan una vez con la opción de elegir este cliente de forma predeterminada... Esto está bien para mí, me siento un poco estúpido en este momento... -

3 Respuestas

consulte las aplicaciones, obtenga una lista de las aplicaciones que están registradas para enviar acciones y elija una, cree una intención, establezca el nombre de la clase e inicie su intención y listo

Respondido el 12 de junio de 12 a las 12:06

si desea encontrar qué aplicaciones pueden manejar la intención, puede usar:

getPackageManager().queryIntentActivities...

cuando encuentre la aplicación que desea, configure el paquete de la intención para que coincida con el de la aplicación.

Respondido el 12 de junio de 12 a las 13:06

Intent email = new Intent(Intent.ACTION_SEND);
email.setType("text/plain");
email.putExtra(Intent.EXTRA_EMAIL,  "" );

email.putExtra(Intent.EXTRA_SUBJECT, "");

email.putExtra(Intent.EXTRA_TEXT, prsnname + " :   "+ data  +"\n\n" +  linkdata);


try
{

activity.startActivity(Intent.createChooser(email, "Send mail..."));

}
catch (android.content.ActivityNotFoundException ex) 
{
    Toast.makeText(activity, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
}

Respondido el 12 de junio de 12 a las 13:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.