2009-11-20 5 views

Respuesta

27

probar este snippet:

/* Create the Intent */ 
final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 

/* Fill it with Data */ 
emailIntent.setType("plain/text"); 
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject"); 
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Text"); 

/* Send it off to the Activity-Chooser */ 
context.startActivity(Intent.createChooser(emailIntent, "Send mail...")); 

piezas clave: el uso de EXTRA_EMAIL para sus direcciones y el uso de createChooser() en caso de que el usuario tiene más de un cliente de correo electrónico configurado.

+3

Gracias, eso funcionó :) Al principio intenté algo así, pero simplemente detuve alguna pantalla de mensajes y no la aplicación de correo electrónico. Creo que fue porque, en ese momento, ¿no tenía una cuenta de correo electrónico configurada en el emulador? – scuba

+0

¿Qué utilizó la palabra clave final? ¿Eso resulta en algún tipo de optimización que desconozco? – Scott

+0

No escribí el fragmento. Personalmente, probablemente no habría usado la palabra clave final allí. – CommonsWare

3

¿Usted intentó

Intent intent = new Intent(
    Intent.ACTION_SENDTO, 
    Uri.parse("mailto:[email protected]") 
); 
startActivity(intent); 
+0

Lo intentó, todavía recibe el mensaje: Acción no admitida Esta acción no es compatible actualmente. En una burbuja parecida a una tostada. ¿Debo configurar algo en el manifiesto para que mi aplicación lo use? – scuba

1

Creo que los problemas reales aquí son que se está ejecutando en el emulador oficial y su intención no coincide con nada.

De mi prueba, este es un problema que ocurre cuando el URI del intento (desde setData()) no coincide con nada y se está ejecutando en uno de los emuladores oficiales de Android. Esto no parece ocurrir en dispositivos reales, por lo que no debería ser un problema del mundo real.

Puede utilizar este código para detectar el momento en que esto va a suceder antes de que inicie la intención:

ComponentName emailApp = intent.resolveActivity(getPackageManager()); 
ComponentName unsupportedAction = ComponentName.unflattenFromString("com.android.fallback/.Fallback"); 
boolean hasEmailApp = emailApp != null && !emailApp.equals(unsupportedAction); 

(. El nombre de la actividad que muestra el método de acción "acción no compatible" es com.android.fallback.FallbackActivity)

Cuestiones relacionadas