Подтвердить что ты не робот

Обнаруживать новое уведомление для Android

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

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

4b9b3361

Ответ 1

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

Вам необходимо зарегистрировать 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;
}
}

Пример проверки активации вашей службы

Ответ 2

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

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