2012-05-18 5 views
9

Nie sądzę, że jest to możliwe, ponieważ nie znalazłem niczego w dokumentacji SDK (jeszcze).Wykrywanie wiadomości toastowych

Ale mogłem zrobić, wiedząc, czy jest możliwe napisanie aplikacji, która rejestruje wiadomości Toast. Rejestrowanie, która aplikacja to pokazała i co zawiera komunikat.

Jest to całkowicie osobista próba stworzenia aplikacji, która może wykryć wiadomości toastowe. Ponieważ coś na moim telefonie tworzy toast mówiący "Wysyłam ..." o jeden raz dziennie, a dla mojego życia nie mogę wyśledzić niewłaściwej aplikacji (klasy Service). Myślałem, że może to być GMail lub Evernote, ale tam wiadomości tostowe do wysyłania są nieco inne. Mam zamiar zbudować aplikację, ponieważ 1) Nie wiem, czy LogCat pokazywał cokolwiek, i 2) Nie chcę, aby mój osobisty/dev-telefon był podłączony do komputera przez cały czas (jak "Wysyłanie" ... "wiadomość pojawia się tak rzadko).

+0

Czy skończyłeś aplikację i umieścisz ją w Google Play? –

+0

@ divideandconquer.se Nigdy nie opublikowałem go w Google Play, ponieważ właśnie szukałem problemu. Ale zadziałało. Komunikat pochodził z zestawu narzędzi Sim Kit, który został wstępnie zainstalowany. Nigdy nie przejmowałem się Google Play, ponieważ od Androida 4.1 powiadomienia informują, która aplikacja je stworzyła. – JonWillis

+4

@ divideandconquer.se Zrobiłem aplikację z tego pytania: https://play.google.com/store/apps/details?id=org.mars3142.android.toaster – mars3142

Odpowiedz

16

Możliwe jest przechwytywanie wiadomości/powiadomień za pomocą Accessibility Service, spójrz na to.

można rozszerzyć klasę AccessibilityService i zastąpić metodę onAccessibilityEvent() zaimplementować coś takiego:

public void onAccessibilityEvent(AccessibilityEvent event) { 
    if (event.getEventType() != AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) 
     return; // event is not a notification 

    String sourcePackageName = (String) event.getPackageName(); 

    Parcelable parcelable = event.getParcelableData(); 
    if (parcelable instanceof Notification) { 
     // Statusbar Notification 
    } 
    else { 
     // something else, e.g. a Toast message 
     String log = "Message: " + event.getText().get(0) 
        + " [Source: " + sourcePackageName + "]"; 
     // write `log` to file... 
    } 
} 

Uwaga: to nie dla mnie pracować na Androidzie 2.2, gdyż nie wydaje się złapać grzanki, ale działało na Androida 4.0+.

+0

Oddam to i informujemy o wyniku: – JonWillis

+0

Trochę czasu zajęło nam uruchomienie usługi. Ale zadziałało. Wysyłanie wiadomości toast ... pochodzi z com.android.stk – JonWillis

+0

działa pięknie. Szukałem tego przez jakiś czas. raz 4.0 trafia na tabele, rzeczy trochę zabawne, ale to naprawia :) –

Powiązane problemy