2010-10-05 6 views
9

J'ai besoin de savoir quels récepteurs de diffusion peuvent gérer une intention donnée.queryBroadcastReceivers ne trouve pas de récepteurs enregistrés avec registerReceiver

Il semble que queryBroadcastReceivers() ne retourne pas les récepteurs enregistrés dans le code à l'aide registerReceiver() mais seulement des récepteurs déclarés dans AndroidManifest.xml.

Est-ce que ce comportement est voulu?

Toute autre façon de trouver tous les récepteurs installés pour une intention?

Merci.

+0

Salut à nouveau, tout le monde peut aider? – Assaf

Répondre

6

On dirait qu'il est impossible de détecter les récepteurs enregistrés dans le code, selon ce message récent sur la liste de diffusion: http://groups.google.com/group/android-developers/msg/5fd1cdb24b2a6760

Cela est décevant que je cherchais un moyen de faire la même chose.

+0

J'ai le même problème en ce moment, et votre réponse est 3 ans. Maintenant, existe-t-il une nouvelle façon de lister les récepteurs de diffusion enregistrés avec 'registerReceiver()'? – Vincent

+0

@Vincent a l'air de rester le même, il n'y en a pas. – sandrstar

1

Si les récepteurs qui vous intéressent sont les vôtres, vous pouvez utiliser sendOrderedBroadcast au lieu de la diffusion régulière. Cela permet à l'émission de passer à tous les récepteurs enregistrés, un par un, en fonction de la priorité, et enfin à votre récepteur de diffusion fourni, qui, selon les résultats/données qui lui sont transmis, peut déterminer quels récepteurs l'ont traité avant.

Vous pouvez vérifier cet exemple de projet qui utilise cette méthode: http://www.mannaz.at/codebase/android-activity-foreground-surveillance/

Questions connexes