88 votes

Vérifier si l'activité a été appelée pour un résultat

Est-il possible de savoir si une activité a été appelée pour le résultat, à l'aide de la fonction startActivityForResult() ou si l'on a seulement commencé à utiliser startActivity() ?

J'ai besoin de contrôler cela, si le résultat est demandé, le comportement sera différent.

180voto

lopisan Points 1327

Quand votre activité a commencé juste en startActivity() a getCallingActivity() de l'activité cible renverra null .

Quand il a été appelé par startActivityForResult() il retournera le nom de l'activité appelante.

Voir Docs pour getCallingActivity() :

Renvoie le nom de l'activité qui a invoqué cette activité. C'est qui les données dans setResult() sera envoyé à. 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é la fonction startActivityForResult(Intent, int) forme que comprend un code de demande), alors le paquet appelant sera nul.

Renvoie à

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

0voto

Ivan González Points 1

Vous pouvez analyser un booléen en mettant un extra dans une intention.

//First Activity
Intent i = new Intent(FirstActivity.this, SecondActiviy.class);   
boolean isForResult = true;
i.putExtra("for-result", isForResult);

Ensuite, dans la rubrique Deuxième activité, vous trouverez la valeur :

//Second Activity
boolean isForResult = getIntent().getBooleanExtra("for-result" , false);

De cette façon, vous savez, grâce à un booléen global, si vous lancez une activité pour obtenir un résultat. Si vous ne mettez pas de booléen supplémentaire, la valeur par défaut sera false. Ce qui veut dire.

//Not necesary at all.
boolean isForResult = false;

Vous n'avez pas besoin d'analyser un faux booléen.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X