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 :

Detecter que le volet de la zone de notification a été ouvert


Sujet :

Android

  1. #1
    Membre du Club
    Homme Profil pro
    Developpeur Android
    Inscrit en
    Février 2015
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Developpeur Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 104
    Points : 68
    Points
    68
    Par défaut Detecter que le volet de la zone de notification a été ouvert
    Bonjour,

    Est-il possible de détecter sur mon activité (de mon application) si l'utilisateur à déplié le volet de notification.

    Je constate que l'on ne passe ni dans onResume, ni dans onPause.


    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    J'ai trouvé ca. A essayer.

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />

    Code java : 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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    @Override
    public void onWindowFocusChanged(boolean hasFocus)
    {
        try
        {
            if(!hasFocus)
            {
                Object service  = getSystemService("statusbar");
                Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
                Method collapse = statusbarManager.getMethod("collapse");
                collapse .setAccessible(true);
                collapse .invoke(service);
            }
        }
        catch(Exception ex)
        {
            if(!hasFocus)
            {
                try {
                    Object service  = getSystemService("statusbar");
                    Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
                    Method collapse = statusbarManager.getMethod("collapse");
                    collapse .setAccessible(true);
                    collapse .invoke(service);
     
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();                
                }
                ex.printStackTrace();
            }
        }
    }
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  3. #3
    Membre du Club
    Homme Profil pro
    Developpeur Android
    Inscrit en
    Février 2015
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Developpeur Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 104
    Points : 68
    Points
    68
    Par défaut
    Ok merci, je teste début de semaine prochaine et te tiens au courant.

    Merci encore.

    Bomatch

  4. #4
    Membre du Club
    Homme Profil pro
    Developpeur Android
    Inscrit en
    Février 2015
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Developpeur Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 104
    Points : 68
    Points
    68
    Par défaut
    Finalement j'ai eu le temps de faire un essai.

    L'idée du onWindowFocus est très bonne. Par contre, je n'arrive pas à comprendre ce que fait exactement le code
    et j'ai l'impression qu'au final, je passe trop souvent dans cette méthode.

    Peut-être que ma demande n'est pas assez précise.
    J'ai besoin de lancer une synchronisation avec un serveur lorsque l'utilisateur réactive le réseau. Et lorsqu'il passe via la barre de notification, mon OnResume ne marche pas.

    Donc onWindowsFocus et une bonne première approche, mais j'ai peur qu'il y ait trop d'appels vers le serveur.

    Il faudrait que je puisse capter l'activation du mode OnLine et lancer la synchro à ce moment.

  5. #5
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Lol. C'est beaucoup plus simple alors. Il suffit d'intercepter le retour de la connectivité avec un BroadcastReceiver :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <receiver android:name=".NetworkReceiver" >
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
        </receiver>

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class NetworkReceiver extends BroadcastReceiver {
     
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
                NetworkInfo networkInfo = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
                if (networkInfo != null && networkInfo.getDetailedState() == NetworkInfo.DetailedState.CONNECTED) {
                    Log.d("Network", "Internet YAY");  //ici lancer ta synchro
                } else if (networkInfo != null && networkInfo.getDetailedState() == NetworkInfo.DetailedState.DISCONNECTED) {
                    Log.d("Network", "No internet :(");
                }
            }
        }
    }
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  6. #6
    Membre du Club
    Homme Profil pro
    Developpeur Android
    Inscrit en
    Février 2015
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Developpeur Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 104
    Points : 68
    Points
    68
    Par défaut
    Vraiment désolé, je n'ai pas vu que tu avais répondu.

    Merci, je pense que c'est ça qu'il me faut. Je vais l'implémenter dès que je peux.

    J'avais vu ceci aussi :
    http://stackoverflow.com/questions/4...ode-on-android

    Mais il faut que je vois la compatibilité avec un sdk min à 9.

    Merci encore à toi.

    Bomatch

  7. #7
    Membre du Club
    Homme Profil pro
    Developpeur Android
    Inscrit en
    Février 2015
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Developpeur Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 104
    Points : 68
    Points
    68
    Par défaut
    Alors !!
    Je dois mal intégrer ton code car j'ai un crash :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.RuntimeException: Unable to instantiate receiver com.........MyActivity$NetworkReceiver: java.lang.InstantiationException: class com.........MyActivity$NetworkReceiver has no zero argument constructor
    J'ai mis pourtant le Receveir dans le manifest avec le bon chemin qui va bien à la place de NetworkReceiver.
    Et la classe est dans mon Activité.

    J'ai faux ??? Je pense que je place mal ma classe.
    J'ai besoin d'avoir le listener dans mon activité

    Merci

    Bomatch

  8. #8
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Il semble que tu ais mis un constructeur dans ta classe NetworkReceiver. Enlèves-le.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  9. #9
    Membre du Club
    Homme Profil pro
    Developpeur Android
    Inscrit en
    Février 2015
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Developpeur Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 104
    Points : 68
    Points
    68
    Par défaut
    Non, je n'ai pas mis de constructeur, j'ai juste copié collé ta classe dans mon activité.
    Par contre, j'ai pu corrigé en la mettant "Static"

    Merci à toi, j'ai pu faire ce que je voulais.

    Bonne fin de journée

    Bomatch

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] MsgBox indiquant que la valeur d'une zone de texte existe déjà
    Par Oxopor dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 19/06/2011, 22h39
  2. Réponses: 1
    Dernier message: 09/05/2011, 17h33
  3. Saisir que des lettres dans une zone de texte
    Par parab dans le forum IHM
    Réponses: 2
    Dernier message: 03/12/2008, 14h52
  4. detecter que deux Hostnames sont pour 1 machine?
    Par bliml dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 05/05/2007, 08h17
  5. Réponses: 13
    Dernier message: 19/02/2006, 16h54

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