prosper4tie Posté(e) 20 juin 2010 Share Posté(e) 20 juin 2010 Bonjour à tous, Je sèche actuellement sur un problème qui ne doit pas en être un ;) Je développe en java depuis pas mal de temps mais je n'ai pas encore l'habitude des specs Android avec les intents et tout ce qui tourne autour. Donc voilà j'ai crée une Activity qui se charge de fixer une alarme grâce à l'AlarmManager, elle se charge également de charger une notification dans la SatusBar. Tout se passe bien, mon alarme de déclenche, j'exécute mon traitement dans la méthode onReceive (étendue de BroadcastReceiver), mais j'ai besoin à la fin d'effacer ma notification créée précédemment dans mon Activity. Et là je comprends pas comment faire, faut-il appeler la méthode de mon Activity, du genre MaClasse.this.maMethodQuiEfface(), à priori non car le compilateur me retourne une erreur. Faut-il attraper un évènement dans l'Activity du genre mon onReceive se termine correctement ? si c'est le cas je n'ai pas trouvé. Je vous remercie par avance de vos éclaircissements ;) Lien vers le commentaire Partager sur d’autres sites More sharing options...
popolbx Posté(e) 20 juin 2010 Share Posté(e) 20 juin 2010 bah efface ta notification à la fin de onReceive..... pour choper le service de notification tu as du faire getSystemService(xxx) là tu le fais avec ton Context local en paramètre du onReceive: onReceive(Context toto..... toto.getSystemService(xxxxx) et tu vire ta notification. edit: le plus simple serait de réécrire taMethodeQuiEfface avec un Context en paramètre et en static .... Comme ça dans l'activity tu peux l appeler avec MaMethodequiEfface(this) et dans le broadcast avec context en paramètre. Lien vers le commentaire Partager sur d’autres sites More sharing options...
prosper4tie Posté(e) 23 juin 2010 Auteur Share Posté(e) 23 juin 2010 Merci pour ces infos. Désolé pour le silence mais n'étant actuellement pas chez moi, je peux pas tester mais l'idée me parait correcte. Par contre la méthode clear() du notification manager demande un pendingIntent en paramètre, auquel je n'ai pas accès, enfin de mémoire. Je teste tout ça en rentrant, merci bien. Lien vers le commentaire Partager sur d’autres sites More sharing options...
popolbx Posté(e) 23 juin 2010 Share Posté(e) 23 juin 2010 tu remets le même pending intent que quand tu l'as crée....(soit le même soit tu recrée exactement le même) Et si mes souvenirs sont bons tu peux aussi faire un clear par l'ID de la notification. Lien vers le commentaire Partager sur d’autres sites More sharing options...
naholyr Posté(e) 23 juin 2010 Share Posté(e) 23 juin 2010 Et si mes souvenirs sont bons tu peux aussi faire un clear par l'ID de la notification.C'est cette solution que je retiendrais, si tu n'as qu'une notification par application tu peux mettre un ID arbitraire en constante et l'utiliser dans toute ton appli :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
prosper4tie Posté(e) 25 juin 2010 Auteur Share Posté(e) 25 juin 2010 Effectivement le NotificationManager demande uniquement l'ID pour supprimer la notification. Du coup tout fonctionne parfaitement, ce qui donne dans le OnReceive() public class WakeUpReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { try { [...] NotificationManager notifManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); notifManager.cancel(WakeUp.WakeUp_ID); } catch (Exception r) { Toast.makeText(context, "Erreur.",Toast.LENGTH_SHORT).show(); r.printStackTrace(); } } } Merci à tous Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.