2012-02-20 9 views
28

W aplikacji na Androida, nad którą pracuję, chciałbym móc wykryć, kiedy pojawi się nowe powiadomienie paska stanu, niezależnie od tego, czy zostało spowodowane przez moją aplikację. Aby być bardziej szczegółowym, chcę policzyć liczbę powiadomień w danym przedziale czasowym.Wykrywanie nowego powiadomienia z Androidem

Czy to możliwe, a jeśli tak, to w jaki sposób?

Odpowiedz

52

Właściwie to jest możliwe, używam go w mojej aplikacji.

Musisz zarejestrować się pod numerem AccessibilityService i upewnić się, że użytkownik włącza usługę.

Przykład dla usługi:

public class InstantMessenger extends AccessibilityService { 

@Override 
public void onAccessibilityEvent(AccessibilityEvent event) { 
    if (event.getEventType() == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) { 
     //Do something, eg getting packagename 
     final String packagename = String.valueOf(event.getPackageName()); 
} 
} 

@Override 
protected void onServiceConnected() { 
    if (isInit) { 
     return; 
    } 
    AccessibilityServiceInfo info = new AccessibilityServiceInfo(); 
    info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED; 
    info.feedbackType = AccessibilityServiceInfo.FEEDBACK_SPOKEN; 
    setServiceInfo(info); 
    isInit = true; 
} 

@Override 
public void onInterrupt() { 
    isInit = false; 
} 
} 

Example for checking if your Service is activated

+0

To jest fajne. Nie wiedziałem o tym. Dzięki! – koopaking3

+12

@Sean Uwaga: Aby uruchomić 'AccessibilityService' użytkownik musi otworzyć Ustawienia - Dostępność, włącz Ułatwienia dostępu, a następnie oddzielnie włącz usługę. Na tym etapie wyświetla się następujący komunikat: "Ta usługa ułatwień dostępu może gromadzić cały wpisywany tekst, w tym karty kredytowe danych osobowych z wyjątkiem haseł, może również rejestrować interakcje użytkownika z interfejsem użytkownika. . Posługiwać się...?" Jeśli nie używasz tego do użytku osobistego lub firmy, może to być dużo zaufania, jakiego można oczekiwać od użytkowników rynku. Po prostu chcę dać ci duży obraz – koopaking3

+1

Nie oznacza to, że nie powinieneś go używać, po prostu bądź świadomy, zanim zaczniesz wkładać pracę, aby zbudować swój własny – koopaking3

19

Nowy Notification Listener API w Androidzie 4.3 pozwala to zrobić.

Dzięki temu hack dostępności jest mniej potrzebny. Umożliwia także odrzucanie powiadomień.

+0

Program nasłuchujący powiadomień nie działa jeszcze całkowicie, na przykład nie można pobrać tekstu z aktualizacji nawigacji Google (zawsze zwraca wartość null). Co oznacza, że ​​"hack" dostępności jest nadal przydatny? – Fuzzy

+0

zmienił go na "mniej potrzeby" zamiast "nie ma potrzeby" – thoutbeckers

+0

czy można * zmienić * powiadomienia w jakikolwiek sposób? Chcę, aby zgłoszenia tej aplikacji były niemożliwe do rozesłania przez tę aplikację – squirrel

Powiązane problemy