检测新的Android通知

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

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

  • 在Android上收听通知
  • 意图恢复以前暂停的活动(从通知中调用)
  • Android通知意图自行清除它
  • 在通知中播放/暂停button图像,Android
  • 如何使用phonegap在状态栏上创build通知
  • 从GCM通知获取数据
  • 使用Firebase的聊天应用程序:收到新消息时收到通知 - Android
  • 直接向Amazon SNS注册设备ID
  • 其实,这是可能的,我用它在我的应用程序。

    您需要注册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通知。