2010-09-30 12 views
3

Idéalement, je ne veux pas démarrer une activité pour le faire. Lorsque la connexion Wi-Fi est perdue, mon application doit fermer car c'est une erreur fatale pour nous. Je veux afficher un message d'erreur et demander à l'utilisateur d'appuyer sur un bouton Ok, puis de quitter l'application. Quelle est la meilleure manière de s'occuper de ça?Comment puis-je afficher une boîte de dialogue à partir d'un récepteur de diffusion Android?

Merci! Autant que je sache, seules les activités peuvent afficher des boîtes de dialogue.

+0

avez-vous résolu? – nida

Répondre

7

Si oui, et si votre BroadcastReceiver est enregistré par une activité via registerReceiver(), vous êtes défini - utilisez cette activité. Si, cependant, votre BroadcastReceiver est enregistré dans le manifeste, je pense que vous n'aurez pas d'autre choix que de faire autre chose.

Par exemple, vous pouvez envoyer une diffusion ordonnée Intent. Votre activité actuellement en cours - le cas échéant - aurait une priorité élevée BroadcastReceiver pour cette Intent, puis peut apparaître une boîte de dialogue quand il reçoit la diffusion. Si, cependant, aucune de vos activités ne s'affiche à l'écran, vous pouvez avoir un enregistrement BroadcastReceiver de faible priorité enregistré, si vous souhaitez afficher un Notification ou quelque chose du genre. Here is a blog post qui couvre un peu plus sur ce modèle.

+0

J'enregistre le récepteur via registerReceiver() mais lorsque j'essaie d'afficher le dialogue de la méthode onReceive, il n'apparaît pas. Quel pourrait être le problème? – smitten

+0

@smitten: Vous ne savez pas quel 'Contexte' vous utilisez pour la boîte de dialogue - assurez-vous qu'il s'agit de' Activity'. Sinon, AFAIK, cela devrait fonctionner très bien. – CommonsWare

+0

Quelque chose d'autre était faux. Cela marche! Merci. – smitten