web-dev-qa-db-fra.com

Vérifiez si l'activité a été appelée pour le résultat

Est-il possible de savoir si une activité a été appelée pour résultat, en utilisant startActivityForResult() ou si elle a seulement été lancée en utilisant startActivity()?

Je dois contrôler cela, si son résultat est recherché, le comportement sera différent.

69
TiagoM

Lorsque votre activité a été démarrée uniquement par startActivity() une méthode getCallingActivity() dans l'activité cible renverra null.

Lorsqu'il a été appelé par startActivityForResult(), il renverra le nom de l'activité appelante.

Voir les documents pour getCallingActivity() :

Renvoie le nom de l'activité qui a appelé cette activité. C'est à qui les données de setResult() seront envoyées. Vous pouvez utiliser ces informations pour valider que le destinataire est autorisé à recevoir les données.

Remarque: si l'activité appelante n'attend pas de résultat (c'est-à-dire qu'elle n'a pas utilisé le formulaire startActivityForResult(Intent, int) qui inclut un code de demande), alors le package appelant sera nul.

Renvoie

Le ComponentName de l'activité qui recevra votre réponse, ou null si aucun.

146
lopisan