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