2015-02-23 2 views
5

Я хочу удалить все отменяемые уведомления из строки состояния. Я знаю, как удалить уведомления о приложении. Я видел это post, но я хочу удалить другие уведомления приложений.Удалить все уведомления из панели уведомлений

Существует кнопка «Очистить» в уведомлениях во всех версиях андроида, который очищает все уведомления с этим флагом: Notification.FLAG_AUTO_CANCEL

Это означает, что можно отменить все уведомления. Но я не нашел документа о том, как это сделать. Кто-нибудь знает, как это сделать?

Благодаря

+0

Для того, чтобы получить доступ ко всем уведомлений в панели уведомлений вам нужно иметь вам нужно пользователю для того, чтобы доступность услуги для app.something как [это] (http://stackoverflow.com/questions/12554448/ android-accessibility-service-detect-notification). Поддерживает ли ваше приложение поддержку? – Droidekas

+0

Думаю, я могу добавить это в свое приложение, и что мне делать? –

+0

, вы можете просто использовать диспетчер уведомлений вместе с идентификатором, чтобы удалить уведомление, как указано [здесь] (http://stackoverflow.com/questions/2839727/remove-the-notification-icon-from-the-status-bar) и [здесь] (http://stackoverflow.com/questions/3595232/android-remove-notification-from-notification-bar) – Droidekas

ответ

12

Начиная с уровня API 18 Вы можете отменить уведомления, размещенные в других приложениях, отличных от вашей собственной, используя NotificationListenerService, метод немного изменился в леденец, вот способ, чтобы удалить уведомления, охватывающие также Lillipop API.

Первый в способе onNotificationPosted вы храните все объекты StatusBarNotification. Затем вы должны поддерживать обновленную ссылку на эти объекты, удаляя их, если уведомление каким-то образом отклонено в методе 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 
    } 
} 

Наконец, вы можете удалить любое уведомление, используя cancelNotification метод.

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

Официальный документ: http://developer.android.com/reference/android/service/notification /NotificationListenerService.html#cancelNotification(java.lang.String) Было бы интересно узнать ограничения этого вызова. Позволяет ли оно отменять все виды уведомлений (например, OnGoing)? –

Смежные вопросы