Обнаружение нового уведомления Android - PullRequest
29 голосов
/ 20 февраля 2012

В приложении для Android, над которым я работаю, я хотел бы иметь возможность определять, когда появляется уведомление о новой строке состояния, независимо от того, было ли оно вызвано моим приложением. Чтобы быть более точным, я хочу посчитать количество уведомлений в данный период времени.

Возможно ли это вообще, и если да, то как?

Ответы [ 2 ]

55 голосов
/ 09 марта 2012

На самом деле это возможно, я использую это в своем приложении.

Для Android 4.2 и ниже:

Вам необходимо зарегистрировать AccessibilityService и убедиться, что пользователь включает услугу.

Пример для услуги:

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

Пример проверки, активирована ли ваша служба

Для Android 4.3 и выше:

Используйте API приемника уведомлений

21 голосов
/ 14 ноября 2013

Новый API прослушивателя уведомлений в Android 4.3 позволяет вам сделать это.

При этом меньше требуется взлом доступа.Это также позволяет отклонять уведомления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...