检测新的Android通知

时间:2012-02-20 19:28:09

标签: android notifications

在我正在处理的Android应用中,我希望能够检测到何时出现新的状态栏通知,无论它是否是由我的应用引起的。更具体地说,我想计算给定时间范围内的通知数量。

这是否可能,如果是,怎么样?

2 个答案:

答案 0 :(得分:55)

实际上,我可以在我的应用中使用它。

适用于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;
}
}

Example for checking if your Service is activated

适用于Android 4.3及更高版本:

使用Notification Listener API

答案 1 :(得分:21)

Android 4.3中的新Notification Listener API可让您执行此操作。

通过这种方式,对可访问性黑客的需求减少了。它还允许您解除通知。