Android NotificationListenerService:如何知道用户是点击了通知(打开相关应用程序)还是简单地删除了它

Android NotificationListenerService: how to know if user clicked on the notification (opening the related app) or simply deleted it

我正在处理我的 Android 设备 (android 5.1.1) 上每个应用程序(不仅是我的应用程序)生成的通知。 通过扩展 NotificationListenerService,我能够知道何时发布推送通知(覆盖 "onNotificationPosted" 方法)以及何时删除通知(覆盖 "onNotificationRemoved" 方法)。

问题是我想知道通知是如何被删除的: a)点击它(打开应用程序) 要么 b)通过滑动它(所以它只是被删除) ?

有可能知道吗? 提前致谢!

最好的方法是获取所有 运行 进程的列表! 所以,在 onNotificationRemoved 方法中我们可以: 1.使用Android Processes库获取运行进程列表 2.将每个进程名称与packageName进行比较 3.如果比较return为真值,我们检查进程是否在前台

public void onNotificationRemoved(StatusBarNotification sbn) {
    String packageName = sbn.getPackageName();
    try {
        List<AndroidAppProcess> processes = ProcessManager.getRunningAppProcesses();
        if (processes != null) {
            for (AndroidAppProcess process : processes) {
                String processName = process.name;
                if (processName.equals(packageName)) {
                    if (process.foreground ==true)
                    {
                        //user clicked on notification
                    }
                    else
                    {
                        //user swipe notification
                    }
                }
            }
        }
    }
    catch (Exception e)
    {
        String error = e.toString();
    }
}