Compruebe si se ha llamado a la actividad para obtener un resultado

81

¿Es posible saber si alguna actividad ha sido solicitada para resultado, uso startActivityForResult()o si solo comenzó a usar startActivity()?

Necesito controlar esto, si se requiere un resultado, el comportamiento será diferente.

TiagoM
fuente

Respuestas:

163

Cuando su actividad se inició, solo regresará startActivity()un getCallingActivity()método en la actividad objetivo null.

Cuando fue llamado por startActivityForResult(), devolverá el nombre de la actividad de llamada.

Ver Documentos para getCallingActivity():

Devuelve el nombre de la actividad que invocó esta actividad. Este es a quién setResult()se enviarán los datos . Puede utilizar esta información para validar que el destinatario puede recibir los datos.

Nota: si la actividad de llamada no espera un resultado (es decir, no utilizó el startActivityForResult(Intent, int)formulario que incluye un código de solicitud), entonces el paquete de llamada será nulo.

Devoluciones

El ComponentName de la actividad que recibirá su respuesta, o null si no hay ninguna.

lopisan
fuente
1
Si inicia la actividad con: FLAG_ACTIVITY_NEW_TASK, no funciona :( (Tuve que iniciar la actividad de inicio de sesión fuera de contexto en un controlador de errores). ¿Alguna otra idea? ¡Gracias!
bentzy
esto no funciona si la actividad se inicia con un fragmento: fragment.getActivity (). startActivityForResult (intent, requestCode);
Mario Lenci
@MarioLenci Funciona correctamente para mí. No importa si lo empiezo desde actividad o fragmento.
Robyer
@MarioLenci porque cuando estás en un fragmento, no tienes que llamar getActivity().startActivityFor…desde un fragmento que tienes que hacer startActivityForResultdirectamente.
Martin Marconcini