检测新的Android通知

在我正在开发的Android应用程序中,我希望能够检测何时出现新的状态栏通知,而不pipe它是否是由我的应用程序引起的。 更具体地说,我想在给定的时间范围内统计通知的数量。

这甚至是可能的,如果是这样,怎么样?

其实,这是可能的,我用它在我的应用程序。

您需要注册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中新的Notification Listener API使您可以执行此操作。

有了这个,对辅助function的攻击就不再需要了。 它也允许你closures通知。