¿cómo podemos usar startActivityforResult () para la intención de Email?

Estoy usando la intención de enviar un correo electrónico con un archivo adjunto, funciona bien, quiero obtener este resultado de bash de correo electrónico, ya utilicé startActivityforResult() , pero no puedo obtener resultados para la intención del correo electrónico, ¿cómo podemos usar startActivityforResult() para Intento de correo electrónico?

Gracias a todos

No puedes, esto no es parte de la API. Se devuelve una vez que haya presionado el botón de enviar, incluso si no se envía

No hay API como se sugirió anteriormente. Pero … hay una solución, sin embargo. La mejor manera sería utilizar startActivityForResult() , en lugar de startActivity() para iniciar el bash de correo electrónico. Entonces su método onActivityResult debería verse así:

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == YOUR_REQUEST_CODE){ if (resultCode == RESULT_OK && data != null){ //if data is not null, the user has clicked the send button //in his email application } } 

}

Recuerde que si llama a startActivityForResult() desde el fragmento, siempre use su contexto de actividad, como context.startActivityForResult() y el método onActivityResult se debe anular en su actividad de host.

Tu puedes, pero es feo y poco elegante. Trabajaré en suavizar esto. El problema principal: después de enviar el correo electrónico, termina en una pantalla negra con nada más que el título de la aplicación en la parte superior.

Haré un ‘hit enter para continuar’ o algo si es necesario.

De todos modos: El primer fragmento de la clase principal escribe el informe en sdcard, luego llama a la actividad que enviará el correo electrónico.

 WriteReportToStorage(); Intent Emailreport = new Intent(bvsactivity.this, Emailreport.class); startActivityForResult(Emailreport,emailreport_ran); 

A continuación, en la clase de informe de correo electrónico, hacemos el correo electrónico estándar + código de envío de datos adjuntos:

 public class Emailreport extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Intent email = new Intent(android.content.Intent.ACTION_SEND); email.setType("text/html "); email.putExtra(android.content.Intent.EXTRA_SUBJECT, "subject"); email.putExtra(android.content.Intent.EXTRA_TEXT, "body"); email.putExtra(android.content.Intent.EXTRA_STREAM, Uri.parse("file:/" + Environment.getExternalStorageDirectory() + "//Report.html")); startActivity(Intent.createChooser(email, "Email:")); } 

Por último, en la clase ‘principal’, el resultado de onactivity que elimina el archivo de la tarjeta SD:

 protected void onActivityResult(int requestCode, int resultCode, Intent data) { // Actions based on which menu item we chose. if (requestCode == emailreport_ran) {boolean deleted = reportfile.delete(); emailreport_ran = 1;} } }