prosper4tie Posted June 20, 2010 Share Posted June 20, 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 ;) Link to comment Share on other sites More sharing options...
popolbx Posted June 20, 2010 Share Posted June 20, 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. Link to comment Share on other sites More sharing options...
prosper4tie Posted June 23, 2010 Author Share Posted June 23, 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. Link to comment Share on other sites More sharing options...
popolbx Posted June 23, 2010 Share Posted June 23, 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. Link to comment Share on other sites More sharing options...
naholyr Posted June 23, 2010 Share Posted June 23, 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 :) Link to comment Share on other sites More sharing options...
prosper4tie Posted June 25, 2010 Author Share Posted June 25, 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 Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.