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 :

Lancer automatiquement une application lors de la sortie de veille de l'appareil


Sujet :

Android

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 41
    Points : 24
    Points
    24
    Par défaut Lancer automatiquement une application lors de la sortie de veille de l'appareil
    Bonjour à tous,

    Je souhaiterai démarrer mon Application à chaque sortie de veille de mon appareil
    (je sais que ce n'est pas vraiment conseillé par respect envers les utilisateurs, mais c'est pour une utilisation personnelle :p )

    J'aimerai savoir si certains d'entre vous ont déjà été amenés à réaliser quelque chose du genre : j'ai un peu tout testé : BroadcastReceiver, AlarmManager, Service, mais rien n'y fait, je n'arrive pas à m'en sortir. Ca me paraissait pas super compliqué pourtant ...

    Sinon existe t-il une application existante qui permettrai de réaliser ceci ? J'ai un peu regardé sur le Google Play, mais je n'ai pas trouver quelque chose de concret.

    Merci d'avance pour vos réponses

  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
    Bonjour,

    Il te faut un BroadCastReceiver à l'écoute de ACTION_SCREEN_ON qui démarrera ton écran d'application.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 41
    Points : 24
    Points
    24
    Par défaut
    Merci de ta réponse, voici les différentes étpaes que j'ai effectué concernant le BroadcastReceiver :

    J'ai ceci en premier dans le onCreate() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    BroadcastReceiver receiver;
    	IntentFilter filter;
            receiver = new ScreenOnReceiver();
            filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
            registerReceiver(receiver, filter);
    Ma classe BroadcastReceiver :
    Code : 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 ScreenOnReceiver extends BroadcastReceiver
        {
     
    		@Override
    		public void onReceive(Context context, Intent intent) {
    			Log.e("intent", intent.getAction());
    			if(intent.getAction().equals("android.intent.action.SCREEN_ON"))
    			{
    				Intent i = new Intent(context, MainActivity.class);  
                    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startService(i); 
    			}	
    		}	
        }
    et enfin j'ai rajouté ces lignes dans mon manifest :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     <receiver android:name=".ScreenReceiver">
    		 	<intent-filter>
    		 		<action android:name="android.intent.action.SCREEN_ON"/>
    		 	</intent-filter>
    		</receiver>
    d'après toi, j'ai oublié quelque chose ?

    Est ce que le receiver est toujours valable, même quand l'application ne tourne pas ?

  4. #4
    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
    Ton premier bout de code fait la même chose que les lignes de ton manifeste et par conséquent est superflu.

    Dans le code de ton broadcastReceiver, outre le fait que ton test (if ...) est inutile, tu devrais plutôt mettre startActivity() que startService() non ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 41
    Points : 24
    Points
    24
    Par défaut
    Quand je sors de veille, j'ai bien le log qui s'affiche dans le logcat, la detection de la sortie de veille est donc bonne maintenant.

    par contre si je n'appelle pas unregisterReceiver, l'application plante à la fermeture. J'ai donc rajouté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @Override
        protected void onDestroy() {
           unregisterReceiver(receiver);         
           super.onDestroy();
        }
    mais le problèeme est que du coup quand je quitte l'application, je ne détecte plus la sorite de veille (suite à l'appel à unregisterReceiverje suppose).

    Une idée de comment procéder ?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 41
    Points : 24
    Points
    24
    Par défaut
    Un petit up !

  7. #7
    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
    Je ne vois pas à quoi sert ce bout de code si tu as enregistré ton receiver via ton manifeste (c'est la solution que je te conseillait).

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 41
    Points : 24
    Points
    24
    Par défaut
    Excuse moi, j'avais mal compris ton idée.
    J'avais enlevé le code dans le manifest et laissé celui dans l'Activity.

    Maintenant ça me donne ça :

    Manifest :
    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
     <application
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.NoTitleBar"  >
     
            <receiver android:name=".ScreenReceiver">
    		 	<intent-filter>
    		 		<action android:name="android.intent.action.SCREEN_ON"/>
    		 	</intent-filter>
    		</receiver>
     
            <activity
                android:name=".MainActivity"
                android:label="@string/title_activity_main"
                android:screenOrientation="landscape" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    MainActivity :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class ScreenReceiver extends BroadcastReceiver
        {
    		@Override
    		public void onReceive(Context context, Intent intent) 
    		{
    			System.out.println("onReceive");
    			Intent i = new Intent(context, MainActivity.class);  
    			i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                finish();
                startActivity(i); 
     
    		}
    malgré ça, ça ne fonctionne toujours pas ...

  9. #9
    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
    Je t'ai dis une bêtise. Il semble que cet intent particulier ne puisse pas être capturé via le manifeste mais uniquement par programmation :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        IntentFilter intentFilter = new IntentFilter(Intent.ACTION_SCREEN_ON);
        BroadcastReceiver mReceiver = new ScreenReceiver();
        registerReceiver(mReceiver, intentFilter);

Discussions similaires

  1. Réponses: 5
    Dernier message: 16/05/2015, 13h08
  2. Réponses: 5
    Dernier message: 04/07/2010, 06h13
  3. Lancer une application lors d'un traitement
    Par steelidol dans le forum PL/SQL
    Réponses: 5
    Dernier message: 09/01/2009, 13h57
  4. lancer automatiquement une application
    Par gone01 dans le forum Windows XP
    Réponses: 7
    Dernier message: 08/08/2008, 15h08
  5. Lancer une application lors de l'écran de login
    Par fabou3377 dans le forum Mobiles
    Réponses: 0
    Dernier message: 20/11/2007, 06h20

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