2015-02-23 12 views
5

Desidero rimuovere tutte le notifiche cancellabili dalla barra di stato. So come rimuovere le mie notifiche dell'app. Ho visto questo post prima, ma voglio rimuovere altre notifiche di app.Rimuovi tutte le notifiche dalla barra di notifica

C'è un pulsante "Clear" nelle notifiche in tutte le versioni di Android che cancella tutte le notifiche con questo flag: Notification.FLAG_AUTO_CANCEL

Ciò significa che è possibile cancellare tutte le notifiche. Ma non ho trovato alcun documento su come farlo. Qualcuno mi guida come farlo?

Grazie

+0

Per accedere a tutte le notifiche nella barra delle notifiche è necessario avere il necessario all'utente di abilitare il servizio di accessibilità per il vostro app.something come [questo] (http://stackoverflow.com/questions/12554448/ android-accessibility-service-detect-notification). L'app supporta questo? – Droidekas

+0

Credo di poterlo aggiungere alla mia app e poi cosa devo fare? –

+0

quindi puoi semplicemente usare il gestore delle notifiche insieme all'ID per cancellare la notifica come menzionato [qui] (http://stackoverflow.com/questions/2839727/remove-the-notification-icon-from-the-status-bar) e [qui] (http://stackoverflow.com/questions/3595232/android-remove-notification-from-notification-bar) – Droidekas

risposta

12

a partire dal livello 18 API è possibile annullare notifiche inviati da altre applicazioni diverse dalla propria utilizzando NotificationListenerService, il metodo cambiato un po 'di Lollipop, ecco il modo per rimuovere le notifiche che coprono anche API Lillipop.

Prima all'interno del metodo onNotificationPosted si memorizzano tutti gli oggetti StatusBarNotification. Quindi si dovrebbe mantenere un riferimento aggiornato a quegli oggetti, rimuovendoli se la notifica è in qualche modo ignorata nel metodo onNotificationRemoved.

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) 
public class NotificationService extends NotificationListenerService { 

    @Override 
    public void onNotificationPosted(StatusBarNotification sbn) { 
     // Store each StatusBarNotification object 
    } 

    @Override 
    public void onNotificationRemoved(StatusBarNotification sbn) { 
     // Delete removed StatusBarNotification objects 
    } 
} 

Infine è possibile rimuovere qualsiasi notifica utilizzando cancelNotification metodo.

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { 
    cancelNotification(sbn.getPackageName(), sbn.getTag(), sbn.getId()); 
} 
else { 
    cancelNotification(sbn.getKey()); 
} 
+1

Doc ufficiale: http://developer.android.com/reference/android/service/notification /NotificationListenerService.html#cancelNotification(java.lang.String) Sarebbe interessante conoscere i limiti di tale chiamata. Permette di cancellare tutti i tipi di notifiche (ad esempio quelle di OnGoing)? –

Problemi correlati