2012-05-18 3 views
9

Я не думаю, что это возможно, так как я еще ничего не нашел в документации SDK.Обнаружение тостов

Но я мог бы узнать, возможно ли написать приложение, в которое записываются сообщения Toast. Ведение журнала, приложение которого показало это и то, что отображалось в сообщении.

Это совершенно личное стремление создать приложение, которое может обнаруживать сообщения тоста. Потому что что-то на моем телефоне создает тост, говорящий «Отправка ...» примерно один раз в день, и для жизни меня не удается отследить приложение-нарушитель (класс обслуживания). Я думал, что это может быть GMail или Evernote, но там тосты для отправки немного разные. Я собираюсь создать приложение, потому что 1) я не знаю, будет ли LogCat показывать что-нибудь, и 2) я не хочу, чтобы мой личный/dev телефон подключался к ПК все время (как «Отправка ... "сообщение происходит нечасто).

+0

Вы завершили свое приложение и разместили его в Google Play? –

+0

@ divideandconquer.se Я никогда не размещал его в Google Play, поскольку я просто отслеживал проблему. Но это сработало. Сообщение появилось из набора инструментов Sim Tool, который был предварительно установлен. Я никогда не потрудился с игрой Google, так как с Android 4.1 уведомления сообщают вам, какое приложение их создало. – JonWillis

+4

@ divideandconquer.se Я внедрил приложение из этого вопроса: https://play.google.com/store/apps/details?id=org.mars3142.android.toaster – mars3142

ответ

16

Можно получить сообщения/уведомления с помощью Accessibility Service, взгляните на это.

Вы можете расширить класс AccessibilityService и переопределить метод onAccessibilityEvent() реализовать что-то вроде этого:

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... 
    } 
} 

Примечание: Это не работает для меня на Android 2.2, как это, кажется, не поймать Тосты, но он работал на Android 4.0+.

+0

Я отдам его, и дайте знать результат – JonWillis

+0

Потратил время, чтобы заставить службу работать. Но это сработало. Тост отправки сообщения ... исходит от com.android.stk – JonWillis

+0

работает красиво. Некоторое время искал это. один раз 4.0 попал в таблицы, вещи, когда немного смешно, но это исправляет его :) –

Смежные вопросы