web-dev-qa-db-fra.com

Android - Obtenir dynamiquement l'activité actuelle au premier plan

voici la situation:

  1. Dans un thread, un événement est déclenché.
  2. L'activité en cours doit être récupérée.
  3. Ensuite, une boîte de dialogue est créée pour cette activité et affichée.

Problèmes: Dans la mesure où j'ai cherché, il n'y a aucun moyen de récupérer l'activité en cours au premier plan.

Informaitons supplémentaires: Cela doit pouvoir être traité dans plusieurs activités. Ainsi, il peut être affiché dans l'activité A, B ou C.

8
Dylan Holmes

Je ne sais pas si c'est ce que vous recherchez, mais cela semblait assez simple. http://iamvijayakumar.blogspot.com/2011/09/get-current-activity-and-package-name.html

  ActivityManager am = (ActivityManager) this .getSystemService(ACTIVITY_SERVICE);
  List<RunningTaskInfo> taskInfo = am.getRunningTasks(1);
  ComponentName componentInfo = taskInfo.get(0).topActivity;
  Log.d(WebServiceHelper.TAG, "CURRENT Activity ::" + taskInfo.get(0).topActivity.getClassName()+"   Package Name :  "+componentInfo.getPackageName());

J'espère que cela t'aides.

16
Prmths

Plan A : prenez votre demande à la lettre

Étape n ° 1: le thread est-il géré par un service?

Étape n ° 2: demandez au service d’envoyer un message lorsque le "pair est déclenché" - LocalBroadcastManager, Otto de Square, le bus d’événement de greenrobot, etc.

Étape 3: Demandez à chaque activité d'être configurée pour écouter ce message lorsqu'elle est au premier plan.

Étape 4: Demandez à l'activité d'afficher la boîte de dialogue à la réception du message


Plan B : même résultat visuel

Étape n ° 1: le thread est-il géré par un service?

Étape 2: Demandez au service d’appeler startActivity() de participer à une activité sur le thème du dialogue.

Étape n ° 3: il n'y a pas d'étape n ° 3

5
CommonsWare

Pour ce faire, vous pouvez étendre Activity et Application et disposer de méthodes qui extraient et définissent la référence d’activité actuellement affichée en tant que variable de niveau Application. Essayez cette approche: Comment obtenir le contexte actuel de l’activité de premier plan sous Android? .

0
frogmanx

Vous pouvez y parvenir en utilisant un récepteur de diffusion personnalisé. Vous pouvez définir un récepteur de diffusion dans votre thread et l'écrire dans différentes activités. Et à partir de votre fil, vous pouvez décider quelle activité envoyer en diffusion.

Dans le récepteur, vous pouvez afficher la boîte de dialogue.

0
Sushil