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());
}
fonte
2015-07-05 18:17:50
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
Credo di poterlo aggiungere alla mia app e poi cosa devo fare? –
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