旧设备的NotificationManager getActiveNotifications()

时间:2016-01-24 18:15:05

标签: android notifications notificationmanager

我希望能够根据需要从我的Android应用获取有效通知。 (实际上我只需要知道是否有) 我一直在寻找这种行为,似乎我只有两个选项:NotificationManager.getActiveNotifications()这正是我需要的,但只能从SDK 23或使用NotificationService获得,但我真的不喜欢这个解决方案,因为我必须向我的应用程序提供读取所有通知的权限,这绝对是一种过度杀伤力。

是否有人知道任何行为类似于NotificationManager.getActiveNotifications()并且不需要SDK> = 23的解决方案?

提前致谢!

2 个答案:

答案 0 :(得分:1)

您知道您提出了哪些通知,因为您的代码提出了它们。

理论上,您可以通过使用 setDeleteIntent() 注册 PendingIntent 来了解用户何时清除了该通知,从而知道哪些通知已被删除。我已经有一段时间没有使用它了,所以它可能不像以前那样工作了。

但是,如果您知道自己提出了哪些通知,并且知道哪些通知已被清除,那么了解哪些通知仍未完成就需要记账了。

老实说,“什么是活动通知?”感觉像代码气味。问这个问题可能有很好的理由。如果我们是队友,而且这是代码审查的一部分,我会问为什么我们关心任何给定的通知是否处于活动状态。

而且,在这一点上,API 级别 23 (Android 6.0) 已经有 6 年的历史了。考虑到 Android 5.x 和旧设备上仍存在的所有安全问题,您真的应该重新考虑是否应该支持旧版本的 Android。

答案 1 :(得分:0)

在我的项目中,我使用静态数组来保存所有待处理的通知。 当应用程序进入前台时,将清除此数组。 感谢。