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 :

Service contenant un BroadCastReceiver


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 Service contenant un BroadCastReceiver
    J'aimerai créer un service qui me permet de quitter l'application dès que mon mobile est monté.
    Pour cela, je dispose de l'instruction ACTION_MEDIA_MOUNTED.
    Donc, pour savoir si le mobile est monté je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    BroadcastReceiver bcr = new BroadcastReceiver ()
    {
    	@Override
    	public void onReceive (Context context, Intent intent)
    	{
    		//Ici, je ferme l'application
    	}
    };
    IntentFilter filter = new IntentFilter ();
    filter.addAction (Intent.ACTION_MEDIA_MOUNTED);
    registerReceiver (bcr, filter);
    Je place ces lignes de code dans le onCreate de mon Service appelé MyService.

    Ensuite, dans le onCreate de ma première activity je crée mon service comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Intent intent = new Intent (this, MyService.class);
    startService (intent);
    Et dans le Manifest, j'ajoute:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <service android:name="MyService" />

    Dans un premier temps, je remarque que je n'entre jamais dans le onReceive de mon BroadcastReceiver. Quelqu'un saurait me dire pourquoi?
    De plus, comment faire pour appeler la fonction setResult et finish de l'activity courante?


    Merci d'avance

  2. #2
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    Dans un premier temps, je remarque que je n'entre jamais dans le onReceive de mon BroadcastReceiver. Quelqu'un saurait me dire pourquoi?
    il y a une discussion sur le sujet ici :
    http://groups.google.com/group/andro...ecbdc264f94081

    et essaye également avec cette permission
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    De plus, comment faire pour appeler la fonction setResult et finish de l'activity courante?
    Euh via un handle ou observer pour notifier à partir de ton service que l'activity dit se fermer ;

    Bon courage .

  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
    Merci beaucoup ca à l'air de fonctionner en fin de compte!

    En revanche, ceci fonctionne seulement sur l'activity où j'ai déclaré le service! Lorsque j'appelle une autre activité, j'ai l'impression que le service est arrêté.
    Est ce normale?

  4. #4
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    En revanche, ceci fonctionne seulement sur l'activity où j'ai déclaré le service! Lorsque j'appelle une autre activité, j'ai l'impression que le service est arrêté.
    Est ce normale?
    Le service s'arrête que si tu lui signales un Stop

    A facility for the application to tell the system about something it wants to be doing in the background (even when the user is not directly interacting with the application). This corresponds to calls to Context.startService(), which ask the system to schedule work for the service, to be run until the service or someone else explicitly stop it
    Regarde dans les process tu téléphones s'il tourne toujours .

    Par contre si tu veux l'appeler d'une autre activity il faut que tu te "bind" dessus.

  5. #5
    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
    Merci pour ta réponse!

    Que veux tu dire par:
    Par contre si tu veux l'appeler d'une autre activity il faut que tu te "bind" dessus.
    En faite, le mobile peut être monté à n'importe quel moment donc sur n'importe quel activity! Je le seul endroit où je parle de mon service dans mon code est dans ma première vue (pour l'initialiser)! Je pense que cela suffit, je me trompe?

  6. #6
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    En faite, le mobile peut être monté à n'importe quel moment donc sur n'importe quel activity! Je le seul endroit où je parle de mon service dans mon code est dans ma première vue (pour l'initialiser)! Je pense que cela suffit, je me trompe?
    Si tu veux utiliser un handler ou autre il faut bien que ton service sache à qui le remonté. Ce que je voulais dire c'est que ton activity en cours se lie à ton service , en lui donnant un handler pour le prévenir , de ce fait lorsque ton service demandera à fermer l'application tu le sauras à partir de ton activity en cours qui fera le procédure nécessaire à sa fermeture puis l'application.

    Après je ne sais pas s'il y a un moyen pour que ton service puisse prévenir l'application de se ferme sans passer par un handler (le kill.process peut être une solution mais cela n'est pas propre ).

    Si tu as une autre solution je suis preneur .

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

Discussions similaires

  1. Bind de service par BroadcastReceiver
    Par matwia dans le forum Android
    Réponses: 6
    Dernier message: 23/09/2013, 16h17
  2. [Débutant] Reporting services : Rupture dans un rapport contenant plusieurs matrices.
    Par Balwin dans le forum Services Web
    Réponses: 0
    Dernier message: 02/11/2012, 15h36
  3. Différence entre Service et BroadcastReceiver
    Par Messi007 dans le forum Android
    Réponses: 3
    Dernier message: 07/07/2012, 12h50
  4. [PowerShell] Pb nom d'un service contenant $
    Par Magohamoths dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 07/10/2009, 16h22
  5. Service de nommage java C++
    Par Anonymous dans le forum CORBA
    Réponses: 3
    Dernier message: 15/04/2002, 12h48

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