2011-03-29 19 views
8

Después de iniciar un intento de correo electrónico, ¿cómo puedo obtener la confirmación de que el correo electrónico ha enviado o ha habido un error en la actividad desde la que se realizó?Trivial: obtener la confirmación del correo electrónico enviado en Android

 Intent emailIntent = new Intent(Intent.ACTION_SEND); 
     emailIntent.setType("png/image"); 

     String subject = "Email Subject"; 

     String body = "Message Body"; 

     emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject); 
     emailIntent.putExtra(Intent.EXTRA_TEXT, body); 
     emailIntent.putExtra(Intent.EXTRA_STREAM, 
       Uri.parse("file:///sdcard/" + IMAGE_FILENAME)); 

     startActivity(Intent.createChooser(emailIntent, "Send email...")); 

     //Here I need to do something on a successfully sent email 

Quizás comience activityForResult? Pero, ¿qué resultado debo esperar si hay alguno?

Respuesta

12

Eso realmente depende de la aplicación que se lanza por su Intent. Podría ser la aplicación de Gmail, podría ser la aplicación de correo electrónico, o podría ser cualquier aplicación de terceros. Debido a esto, no hay una forma 100% confiable de determinar si el usuario realmente presiona Enviar o no.

Lo único que puede hacer es verificar si las aplicaciones de Gmail y de correo electrónico devuelven algo relevante cuando se lo llama a través del startActivityForResult y confíe en eso. Pero ten en cuenta que no es confiable porque, de nuevo, podría haber aplicaciones de terceros. Además, dado que estas aplicaciones no especifican públicamente lo que devuelven, pueden cambiar eso en algún momento sin previo aviso.

+0

Parece que no hay forma de obtener un código de resultado en ese momento, gracias por su ayuda. – SamRowley

+5

La aplicación de Gmail devuelve RESULT_OK para resultCode cuando presiona cancelar: / –

3

no se puede obtener ningún código de resultado útil de un intento de correo electrónico. onActivityResult siempre devuelve 0 tan pronto como se inicia el envío o se cancela el envío.

Además si adjuntas archivos, onActivityResult se llama ANTES de que se lean esos archivos.

1

NO se puede hacer esto.

ACTION_SEND NO tiene ningún resultado como resultado siempre se obtiene el valor predeterminado que es RESULT_CANCELED.

Tampoco puede verificarlo con los datos de Intento que regresan porque siempre es nulo enviar o descartar.

Cuestiones relacionadas