【问题标题】:Don't overwrite existing Notification不要覆盖现有的通知
【发布时间】:2010-10-05 21:36:02
【问题描述】:
对于给定的通知 ID,如果有来自应用程序的现有通知,是否可以(使用标准 android 包)不设置通知?
我有一个新闻应用程序通知用户突发新闻头条,其中一个要求是如果用户没有清除它或没有点击查看它,则不要重写突发新闻。
我使用 SharedPreference 来设置一个标志来确定我是否已经显示了一个标题和一个删除意图,它将清除它。但是,当用户清除所有通知时,并不总是调用 deleteIntent。
提前致谢。
桑迪普
【问题讨论】:
标签:
android
notifications
android-notifications
【解决方案1】:
对于以后关注此内容的任何人:
没有简单的方法不使用 SDK 覆盖现有的通知 ID。这样做的方法是:
- 通过 SharedPreference 使用布尔标志,如果设置了此标志,则不要写入通知
- 当用户“清除”所有通知时重置此标志。为此设置一个 deleteIntent(通过服务),请确保在 onStartCommand() 和 onStart() 中清除此标志
- 在应用启动时可选择重置标志
【解决方案2】:
如果您的要求是:
其中一项要求是,如果用户未清除或未点击查看突发新闻,则不得重写。
您可以使用NotificationManager 获取您的应用程序使用getActiveNotifications() 发布的所有活动通知的列表
并检查用户是否已关闭或打开通知并采取所需的操作。
根据getActiveNotifications() 的参考文档:
恢复活动通知列表:已由调用应用发布但尚未被用户关闭或应用取消的通知。
希望对你有帮助。