2015-04-26 13 views
11

Używam NotificationListenerService do obsługi powiadomień urządzenia:Handling powiadomienie na pasku stanu przed wyświetleniem go

@Override 
public void onNotificationPosted(StatusBarNotification sbn) { 

    Log.d(TAG,"onNotificationPosted posted - ID :" + sbn.getId() + "\t" 
      + sbn.getNotification().tickerText + "\t" + sbn.getPackageName()); 
} 

Sposób onNotificationPosted() nazywa po notyfikacji, została zamieszczona na urządzeniu. Czy istnieje sposób, aby go złapać, zanim zostanie przedstawiony?

Widziałem, że czytanie powiadomień można także osiągnąć stosując AccessibilityManager ale znowu to przeczytać po notyfikacji pojawiło.

Czy istnieje sposób, aby opóźnić powiadomień urządzeń pop-upy, aż pewnego momentu?

Wiem, że mogę usunąć powiadomienie przy użyciu NotificationListenerService po jego pojawieniu się (po tym, jak pojawiło się ono na komputerze użytkownika) i zapisać je i spróbować ponownie uruchomić później. Ale mam problemy z ponownym uruchomieniem i znowu dzieje się to po tym, jak powiadomiono o pasku stanu.

+0

jakiego rodzaju powiadomień mówisz? gcm push Powiadomienia? lub jakikolwiek inny ... dlaczego nie możesz wykonać całej niezbędnej pracy przed jej wyświetleniem? – nvinayshetty

+0

Wszystkie aplikacje w powiadomieniach na urządzeniu. Z chęcią wykonam pracę przed wyświetleniem jej w jaki sposób mogę cathc tych powiadomień? –

+1

Słuchacz powiadomień Android AFAIK to jedyny sposób na obsługę powiadomień, ale po ich wyświetleniu. W przeciwnym razie nie ma innej drogi, a przynajmniej takiej, którą znam. –

Odpowiedz

7

Obecnie korzystanie z NotificationListenerService jest jedynym sposobem uzyskania powiadomienia i interakcji z StatusBarNotifications. Przechwytywanie i obsługa powiadomień przed dotarciem do paska stanu jest niedozwolone i stanowiłoby znaczące naruszenie bezpieczeństwa - jest to również potwierdzone tutaj: https://stackoverflow.com/questions/10286087/intercepting-notifications.

Gdyby to było możliwe, to aplikacja mogłaby teoretycznie zablokować wszystkie powiadomienia dla wszystkich innych aplikacji systemu szerokości, która nie byłaby dobra rzecz. Co więcej, nawet z NotificationListenerService możesz widzieć tylko powiadomienia z innych aplikacji, a nie zmieniać ich ani usuwać. Metody modyfikacji/anulowania powiadomień o aplikacji, a mianowicie cancelAllNotifications(), służą jedynie do zmiany powiadomień generowanych przez aplikację wywołującą.

Powiązane problemy