2015-02-23 17 views
5

Tôi muốn xóa tất cả thông báo có thể hủy khỏi thanh trạng thái. Tôi biết cách xóa thông báo ứng dụng của mình mà tôi đã thấy trước đây post, nhưng tôi muốn xóa các thông báo ứng dụng khác.Xóa tất cả thông báo khỏi thanh thông báo

Có một nút "Clear" trong thông báo trong tất cả các phiên bản Android mà xóa tất cả thông báo với cờ này: Notification.FLAG_AUTO_CANCEL

Điều đó có nghĩa nó có thể hủy bỏ tất cả thông báo. Nhưng tôi không tìm thấy bất kỳ tài liệu nào về cách thực hiện điều đó. Có ai hướng dẫn tôi cách làm điều đó không?

Cảm ơn

+0

Để truy cập vào tất cả các thông báo trên thanh thông báo mà bạn cần phải có bạn cần người sử dụng để kích hoạt dịch vụ truy cập cho app.something của bạn như [này] (http://stackoverflow.com/questions/12554448/ android-accessibility-service-detect-notification). Ứng dụng của bạn có hỗ trợ điều này không? – Droidekas

+0

Tôi đoán tôi có thể thêm nó vào ứng dụng của mình và sau đó tôi phải làm gì? –

+0

thì bạn chỉ có thể sử dụng trình thông báo cùng với id để xóa thông báo như đã đề cập [ở đây] (http://stackoverflow.com/questions/2839727/remove-the-notification-icon-from-the-status-bar) và [tại đây] (http://stackoverflow.com/questions/3595232/android-remove-notification-from-notification-bar) – Droidekas

Trả lời

12

Bắt đầu với API Cấp 18 bạn có thể hủy Notifications đăng bởi các ứng dụng khác khác so với của riêng bạn sử dụng NotificationListenerService, phương pháp này đã thay đổi một chút trong Lollipop, đây là cách để loại bỏ thông báo bao gồm cũng API Lillipop.

Đầu tiên bên trong phương thức onNotificationPosted bạn lưu trữ tất cả các đối tượng StatusBarNotification. Sau đó, bạn nên duy trì tham chiếu cập nhật cho các đối tượng đó, xóa chúng nếu thông báo bằng cách nào đó bị loại bỏ theo phương thức 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 
    } 
} 

Cuối cùng, bạn có thể xóa mọi thông báo bằng phương pháp cancelNotification.

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

Tài liệu chính thức: http://developer.android.com/reference/android/service/notification /NotificationListenerService.html#cancelNotification(java.lang.String) Sẽ rất thú vị khi biết các giới hạn của cuộc gọi đó. Google có cho phép hủy tất cả các loại thông báo (ví dụ: thông báo OnGoing) không? –

Các vấn đề liên quan