老设备上的NotificationManager getActiveNotifications()方法

14
我想在需要时从我的Android应用程序获取活动通知(实际上我只需要知道是否有通知)。我一直在寻找这种行为方式,看起来我只有两个选择:NotificationManager.getActiveNotifications()这就是我所需要的,但只能从SDK 23或使用NotificationService中获得,但我真的不喜欢这个解决方案,因为我必须向我的应用程序提供读取所有通知的权限,这绝对是过度杀伤力的做法。
请问有没有任何类似于 NotificationManager.getActiveNotifications() 并且不需要SDK> = 23的解决方案呢?
谢谢!

1
@Nitesh,有出路 - 是的,解决方案 - 不是。最终我只能自己存储活动通知ID。如果您感兴趣,请为我的问题点赞 - 或许最终会有人偶然发现它。 - niosus
2个回答

1

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

理论上,您可以通过使用setDeleteIntent()来注册PendingIntent,以便在用户清除该通知时找出已删除的通知。我已经很长时间没有使用过这个功能了,所以有可能它的效果不如以前好。

但是,如果您知道您发出了哪些通知,并且您知道哪些通知已被清除,那么知道哪些通知仍然未处理只是一种簿记工作。

老实说,“哪些通知处于活动状态?”听起来像是一种代码异味。问这个问题可能有非常好的理由。如果我们是团队成员,并且这是代码审查的一部分,我会问我们为什么关心任何给定通知是否处于活动状态。

而且,此时API Level 23(Android 6.0)已经六年了。考虑到所有Android 5.x及更早版本设备上仍存在的安全问题,您真的应该重新考虑是否应支持比这更旧的Android版本。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接