2010-07-30 12 views
12

Cuando inicio la aplicación de SMS utilizando los siguientes métodos: todo funciona bien hasta el momento en que se envía el mensaje. Cuando envío el mensaje, nunca vuelve a la actividad original a menos que presione el botón Atrás. ¿Cómo puedo iniciar la actividad de SMS y luego, una vez que se envía el mensaje, se muestra nuevamente la actividad principal?¿Volver a la actividad después de la acción completada en Android?

Así es como llamo a la aplicación de SMS con el resultado.

String message = getMessageString(); 
    Intent sendIntent = new Intent(Intent.ACTION_SENDTO); 
    sendIntent.setData(Uri.parse("sms:" + number)); 
    sendIntent.putExtra("sms_body", message); 
    startActivityForResult(sendIntent, INVITE_COMPLETED); 

Respuesta

23

Es posible. Solo tiene que agregar el siguiente extra a su intención:

sendIntent.putExtra("exit_on_sent", true); 
+0

esto funcionó para mí ... – arjoan

+1

No funciona con la aplicación Hangout. – BoD

+0

No llama a ActivityResult, pero vuelve a la aplicación de la persona que llama. – Proverbio

1

Tan pronto como la actividad que ha comenzado ha terminado, el método onActivityResult() en su primera actividad se llama. Es por eso que debe sobrescribir en ActivityResult() en su primera actividad y manejar allí las actividades que están terminadas.

+0

Lo hago - sin embargo, no se llama a la actividad principal después de que se envía el SMS. Simplemente muestra el hilo de conversación, pero no regresa a la actividad principal. – hwrdprkns

1

Se equivocó, quizás no se haya dado cuenta de que había vuelto a la actividad de llamada. Tiene que proporcionar un código de solicitud cuando llama a una subactividad. INVITE_COMPLETED suena un poco como si pudiera representar un código de resultado. Los códigos de resultado como RESULT_OK y RESULT_CANCELED son finales predefinidos de la clase Activity. Si utiliza

startActivityForResult(intent, MY_REQUEST_CODE); 

a continuación, puede anular onActivityResult() y coger ese código de solicitud (que se auto define en la actividad de partida) allí. Esto es lo que parece:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    if (requestCode == MY_REQUEST_CODE) { 
     if (resultCode == RESULT_OK) { 
     // do something useful 
     } 
    } 
} 
+0

¿Hay alguna manera de saber si un mensaje ha sido enviado? Estoy haciendo eso, y cuando presiono el botón Atrás de la actividad de SMS, siempre obtengo Activity.RESULT_CANCELLED como resultCode, haya o no haya enviado el SMS. ¿Hay alguna manera de comenzar la actividad diciéndole que termine después de enviarla? – karl

+0

@karl Hola, encontraste la solución a ese problema, recibo el mismo problema y me trabas, por favor, ayúdame –

+0

No, nunca encontré una solución. Eso fue hace cuatro años, sin embargo, y Android ha cambiado mucho, por lo que puede haber una solución ahora que no existía entonces. – karl

Cuestiones relacionadas