使用新行更新 Android 通知会删除之前的行

2023-11-30

我想将通知分组为摘要。

我通过为所有通知使用一个 ID 来实现这一点。这样 android 就不会创建新的通知,而是更新现有的通知(减少代码):

Notification summaryNotification = new NotificationCompat.Builder(this)
    .setGroupSummary(true)
    .setDefaults(Notification.DEFAULT_ALL)
    .setStyle(new NotificationCompat.InboxStyle()
            .addLine(msg)
            .setBigContentTitle("My App")
            .setSummaryText("FooBar"))
    .build();

mNotificationManager.notify(uuid, summaryNotification);

UUID 始终相同,因此应更新通知。然而当新的通知到来时,setStyle似乎被覆盖了。

这导致老addLine(msg)消失。但是,我希望在没有某种通知管理器服务器端的情况下添加新消息。

有什么想法或建议吗?


我认为您误解了通知生成器。

NotificationCompat.Builder 构建complete通知,包含所有内容。 重用相同的 id 只是告诉通知管理器将具有相同 id 的现有通知替换为新通知:(Source)

[...]更新或创建一个NotificationCompat.Builder对象,从中构建一个Notification对象,并使用您之前使用的相同ID发出Notification。如果之前的通知仍然可见,系统会更新它来自Notification对象的内容.

Thus addLine不是对现有通知执行的操作,而是对您创建的新构建器(当时为空)执行的操作。

如果您想使用收件箱样式向现有通知添加一行,您将需要

  • 保留原始构建器对象,根据需要添加行并使用相同的 id 重新发送通知
  • 创建一个新的构建器并首先添加旧行,然后添加新行。您将需要从某处存储或检索旧行(取决于您的应用程序)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用新行更新 Android 通知会删除之前的行 的相关文章

随机推荐

  • 在 JSP/Servlet 中填充级联下拉列表

    假设我有三个名为dd1 dd2 and dd3 每个下拉列表的值来自数据库 dd3的值取决于 的值dd2 and dd2的值取决于 的值dd1 谁能告诉我如何调用servlet来解决这个问题 基本上有三种方法可以实现这一目标 在第一个下拉列
  • 带有 selenium webdriver 的 Bamboo

    Tools Java Selenium WebDriver Maven Git Bamboo 我不知道如何在 Bamboo 下运行我的测试用例 这些测试用例由 java 编写 由 maven 构建并存储到 Git 存储库中 Bamboo无法
  • 如何在android中检测整个应用程序是否关闭

    有时 应用程序通过按主页按钮关闭 并且 onDestroy 不会调用 我想在整个应用程序关闭时调用一个方法 并且我不会在所有活动的 onDestroy 中调用我的方法 在应用程序类中实现 LifecycleObserver 然后使用如下 p
  • Interop ExcelUsedRange 行计数不正确

    我正在尝试将 Excel 电子表格读入内存 但是当我使用 worksheet UsedRange Rows Count 时 返回值不正确 我的电子表格中有 1670 行数据 但行数显示为 694 行 var excelApp new Mic
  • 当s3数据存储同时具有json和.gz压缩文件时,如何通过Glue爬虫创建AWS Athena表?

    我的预期解决方案有两个问题 1 我的S3存储结构如下 mainfolder date 2019 01 01 hour 14 abcd json mainfolder date 2019 01 01 hour 13 abcd2 json gz
  • 如何从 Pandas 数据框中的列表中删除值?

    我创建了一个数据框 in testing df pd DataFrame test array columns transaction id product id Split the product id s for the testing
  • 使用 Flexdashboard 部署 Shiny 应用程序

    我知道如何使用部署闪亮的应用程序http www shinyproxy io 基本上我只需要 server R 和 ui R 然后使用 docker 这是一个非常简单的工作 但是 当使用 flexdashboard 时 我只有 rmd 文件
  • 具有边框半径的元素的可选区域不一致

    jsFiddle HTML div div img src http i ytimg com vi tntOCGkgt98 maxresdefault jpg CSS body background color blue div backg
  • 多平台编译:System.Configuration.ConfigurationManager.GetSection 在.NetCore 上抛出错误

    背景 我们正在将 Net 应用程序迁移到 Net Core 作为一项策略 我们希望在完整框架上保持现有功能完整 同时将部分应用程序迁移到 Net Core 完整的应用程序将支持通过 Net 远程处理和 REST API 的 services
  • numpy 数组:快速填充和提取数据

    请参阅此问题底部的重要说明 我正在使用 numpy 来加速经度 纬度坐标的一些处理 不幸的是 我的 numpy 优化 使我的代码运行速度提高了大约 5 倍slowly比它在不使用 numpy 的情况下运行 瓶颈似乎在于用我的数据填充 num
  • 在 xamarin 表单 pcl 上执行查询时没有这样的表 sqlite

    我在读取 SQLite 数据库上的表时遇到问题 我的 OBJ User 类 namespace Fimap Models public class OBJ User public int DLR Id get set public stri
  • C++ 地图迭代器

    该程序只打印最重复的单词 如果没有最重复的单词打印错误或 无 我该怎么办 输入 5 个苹果 苹果香蕉 苹果香蕉 输出 苹果 我希望它显示 如果可以说 输入 苹果香蕉 输出 无 include
  • java.util.regex.Matcher 中的 groupCount() 始终返回 0

    我试图计算字符串中有多少个匹配模式 我是使用 java util regex 的新手 我计划使用 matcher groupCount 来获取匹配组的数量 因为根据文档它返回捕获组的数量 返回此匹配器模式中捕获组的数量 按照惯例 第 0 组
  • 如何通过 API URL 显示图像?迅速

    我有一个应用程序 它可以向我显示来自 API 的数据 我创建了一个获取数据的服务 其中 URL string 是 API 的 url class Webservice func getAllMatches completion escapi
  • 如何从特征对象获取对具体类型的引用?

    如何得到Box b or B or Box b 来自a这段代码中的变量 trait A struct B impl A for B fn main let mut a Box b b
  • JQGrid 单击特定单元格时不选择行

    在我的 jqgrid 中 我有一个包含链接的单元格 当前 当用户单击此链接时 会选择该行 我正在使用多重选择 我不想要这个 当用户单击带有链接的特定单元格时 有没有办法不选择该行 我考虑过执行 onCellSelect 然后查看当前单元格是
  • 从类库调用 Javascript

    我创建了一个可供任何第三方应用程序引用的类库 DLL 它仅包含一个函数 该函数调用 JavaScript 来读取本地文件并将文件中的一些值返回到引用应用程序 I used System Web HttpContext Current Res
  • UWP - 未调用来自 DataGrid 的命令

    UWP 应用程序 很重要 因为没有 AncestorType 我无法从 DataGridTemplateColumn 绑定 ViewModel 的命令 也不能是其他值 这是我当前的代码 我已经尝试过 几乎所有的东西
  • 用多态性替换条件 - 当类型发生变化时如何处理?

    对于个人项目 我正在开发一款小型网络游戏 我有一个Card类有一个Status财产 并且到处都有案例陈述 我想 嘿 这是一个很好的机会用多态性代替条件式 问题是 我有几种方法可以做这样的事情 public class Card public
  • 使用新行更新 Android 通知会删除之前的行

    我想将通知分组为摘要 我通过为所有通知使用一个 ID 来实现这一点 这样 android 就不会创建新的通知 而是更新现有的通知 减少代码 Notification summaryNotification new NotificationC