49 votes

Comment vérifier quelles notifications sont actives dans la barre d'état d'Android Dev ?

J'ai créé une application qui définit les notifications dans la barre d'état déroulante des téléphones Android. Cependant, il y a un bug dans mon code (parfois les notifications sont définies, parfois elles ne le sont pas). Je veux pouvoir VERIFIER (dans le code) SI LA NOTIFICATION EST VISIBLE PAR L'UTILISATEUR. (c'est-à-dire que l'utilisateur peut voir la notification dans la barre d'état ?).

Comment puis-je faire ceci? (Merci d'avance).

Un exemple de code est grandement apprécié.

28voto

weakwire Points 6263

Vous devez définir un identifiant pour chaque notification que vous effectuez.

donc tu fais une notification ..

 PendingIntent pendingIntent = PendingIntent.getBroadcast(this, notId + selectedPosition, intent, 0);

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, rightNow.getTimeInMillis() - offset, pendingIntent);

Notification notification = new Notification(R.drawable.icon, "TVGuide ", System.currentTimeMillis());
NotificationManager manger = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
notification.setLatestEventInfo(context, ": " + b.getString("channel"), ": " + showname, pendingIntent);
manger.notify(notId, notification);

pour l'effacer..

 PendingIntent pendingIntent = PendingIntent.getBroadcast(context,notId, intent, 0); 
pendingIntent.cancel();

et pour vérifier si active..( existAlarm renvoie null si aucune intention en attente n'est disponible)

  public PendingIntent existAlarm(int id) {
  Intent intent = new Intent(this, alarmreceiver.class);
  intent.setAction(Intent.ACTION_VIEW);
  PendingIntent test = PendingIntent.getBroadcast(this, id + selectedPosition, intent, PendingIntent.FLAG_NO_CREATE);
  return test;
 }

Tout se résume donc à initialiser un identifiant pour chaque notification et à la rendre unique.

6voto

dev.bmax Points 1126

Une nouvelle méthode est introduite dans la classe NotificationManager dans l'API 23 :

 public StatusBarNotification[] getActiveNotifications()

5voto

Abhishek Saini Points 661

Il existe un drapeau pour cela.

 Notification notification = new Notification(icon, tickerText, when);
notification.flags |= Notification.FLAG_ONLY_ALERT_ONCE;

FLAG_ONLY_ALERT_ONCE :

... doit être défini si vous souhaitez que le son et/ou les vibrations soient joués à chaque fois que la notification est envoyée, même si elle n'a pas été annulée avant cela.

Bien que, la notification clignote quand il est envoyé à nouveau, mais il n'y aura pas de son ou une vibration.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X