Aller au contenu

intent depuis activity vers un service


alvinm93

Recommended Posts

Bonjour, je chercher à envoyer un intent vers un service pour y modifier des paramètres, d'après ce que j'ai lu il faut utiliser un broadcast receiver mais je n'ai rien réussi à obtenir avec.

Préparation de l'intent dans l'activity

...
Intent intent_poney = new Intent(getApplicationContext(), ServiceCall.class);
			if(isChecked == false){
				intent_poney.setAction(ACTION_SET__FALSE);
			}
			else if(isChecked == true){
				intent_poney.setAction(ACTION_SET__TRUE);
			}
			sendBroadcast(intent_poney, null);
...

Implémentation du broadcast receives dans la classe du service

public int onStartCommand(Intent intent, int flags, int startId) {
IntentFilter filter = new IntentFilter();
       filter.addAction(ACTION_SET__TRUE);
       filter.addAction(ACTION_SET__FALSE);
       registerReceiver(broadreceiver, new IntentFilter(filter));
....
}
public BroadcastReceiver broadreceiver = new BroadcastReceiver() {
   	public void onReceive(Context context, Intent intent) {
   		System.out.println("broad called");
   		if (intent.getAction().equals(ACTION_SET__FALSE)){
   			mNotificationManager.cancel(notyDataStateID);
   		}
   		else if (intent.getAction().equals(ACTION_SET__TRUE)){
   			mNotificationManager.notify(notyDataStateID, notification);
   		}

       }
   };

J'ai même tenté en le déclarant en plus dans le manifest

<service android:enabled="true" android:name=".......ServiceCall">
	<receiver android:name=".broadreceiver" android:enabled="true"><intent-filter>
       <action android:name=".....ACTION_SET__TRUE"/>
       <action android:name=".....ACTION_SET__FALSE"/>
       </intent-filter></receiver></service>

Rien de tout celà ne fait quelque chose, le broadcast receiver n'est pas appelé car le system.out.println n'est pas éffectué

Comment pourrais-je faire?

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Pourrais tu essayer de mettre ton nouveau BroadcastReceiver dans une classe, d'étendre BroadcastReceiver et de le configurer dans le manifest.xml

Utilise ce tutoriel ensuite quand cela fonctionnera tu pourra déporté ton broadcast directement dans ton service:

http://thinkandroid.wordpress.com/2010/02/02/custom-intents-and-broadcasting-with-receivers/

Cordialement,

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Je remarque trois choses bizarres dans ton code :

1. Tu mets deux actions dans un filtre donc je ne pense pas que cela puisse fonctionner. Tu devrais essayer deux filtres contenant chaque action (donc tu es obliger d'appeler registerReceiver pour chaque filtre).

2. Le paramètre action d'un intent n'a pas vocation à être un attribut à tester dans ton broadcast receiver. Il faut mieux avoir une seule action, donc un seul filtre, et ajouter un extra dans ton intent. C'est plus propre.

3. La déclaration de broadcast dans le manifeste ne sert à rien si tu utilises la méthode registerReceiver et qu'il n'est pas public (càd partagé avec d'autres applications) ;

Bon courage,

ichpa

Lien vers le commentaire
Partager sur d’autres sites

Donc j'ai tenté de le mettre dans une classe différente, là le broadcast reçoi bien mais le problème est toujours le même car je doit communiquer avec le service, donc je doit conserver un autre broadcast dans la classe du service mais toujours le même problème il ne reçoit rien

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

Aucune idée?

Impossible d'avoir un broadcast receiver qui marche, que se soit dans une activity ou un service, le seul truc qui marche c'est de le mettre dans une classe à part mais aucun interet car le probleme est toujours le même on ne peu toujours pas communiquer avec le service

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...