IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Broadcast receiver startActivity en singleTop


Sujet :

Android

  1. #1
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Par défaut Broadcast receiver startActivity en singleTop
    Bonjour à toutes et à tous,

    J'écoute l'activation ou la désactivation du GPS à l'aide d'un broadcast receiver abonné à android.location.PROVIDERS_CHANGED.

    Lorsque le GPS est désactivé, j'aimerai afficher une modal. Pour ce faire, j'utilise le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    public class GPSReceiver extends BroadcastReceiver {
     
    	public GPSReceiver() {
    	}
     
    	@Override
    	public void onReceive(Context context, Intent intent) {
    		final LocationManager manager = (LocationManager) context
    				.getSystemService(Context.LOCATION_SERVICE);
     
    		boolean gps = manager.isProviderEnabled(LocationManager.GPS_PROVIDER);
    		boolean network = manager
    				.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
     
    		if (!gps || !network) {
     
    			Intent popup = new Intent(context,
    					ModalActivity.class);
    			popup.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    			context.startActivity(popup);
    		}
    	}
    Ma modal s'affiche bien. Cependant elle s'affiche 2 fois. En effet, lorsque je coupe le GPS mon onReceive est appelé 2 fois : désactivation du réseau et désactivation du gps.

    J'ai essayer plusieurs solutions :
    1) J'ai essayé en démarrant mon activité avec Intent.FLAG_ACTIVITY_SINGLE_TOP mais j'ai eu l'erreur suivante :
    Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
    2) J'ai aussi essayé de démarrer mon activité avec les deux flags (NEW_TASK et SINGLE_TOP) mais j'ai toujours 2 modales.

    3) J'ai aussi essayé d'ajouter un booléen en variable statique afin de savoir si ma modal était déjà ouverte. Cependant, j'ai l'impression que les 2 appel à onReceive se font en même temps. Du coup, cette variable est modifier après l'appel au deux modales.

    4) J'ai essayé d'ajouter une variable afin de savoir si je suis déjà passé dans ma fonction onReceive. Dans ce cas, je voulais sortir de la fonction sans appel à la modal. Cependant, même problème que le point 3, mes 2 modales s'affichent étant données que ma variable est modifiée trop tard.

    Avez vous déjà rencontré se problème? Avez vous une solution ?


    Merci d'avance.

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Je n'ai pas rencontré ce cas (fait assez peu mumuse avec les Services), mais est-ce que c'est le même Service qui déclenche tes deux modals ? N'aurais-tu pas bindé 2 services différents aux mêmes flags ? D'où le simultané.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Par défaut
    J'y ai pensé aussi mais non c'est le même qui appel le service simultanément!

    Justement il capte l'arrêt du GPS. Sauf que l'arrêt se fait en 2 temps : arrêt du GPS et arrêt du réseau GPS.

Discussions similaires

  1. Broadcast receiver au boot completed
    Par lolodev dans le forum Android
    Réponses: 12
    Dernier message: 16/01/2017, 14h24
  2. [Tutoriel] BroadCast Receiver sous Android
    Par Djug dans le forum Android
    Réponses: 2
    Dernier message: 11/07/2011, 12h29
  3. Démarrer une activité à partir d'un broadcast receiver
    Par auxiliaire dans le forum Android
    Réponses: 2
    Dernier message: 31/05/2011, 12h23
  4. broadcast receiver activity
    Par jojo_ol76 dans le forum Android
    Réponses: 2
    Dernier message: 22/03/2011, 09h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo