Android NotificationListenerService onNotificationPosted 触发两次

2023-11-26

我收听 WhatsApp 消息等通知。

但每次有通知进入时,NotificationListenerService 都会触发两次。

有谁知道这个问题吗??

这是 AndroidManifest.xml 中的一个片段:

<service android:name=".NotifyService"
            android:label="WhatsNotify"
            android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
    <intent-filter>
                <action android:name="android.service.notification.NotificationListenerService"></action>
    </intent-filter>
</service>

在NotificationListenerService类中:

public class NotifyService extends NotificationListenerService {

    @Override
    public void onNotificationPosted(StatusBarNotification sbn) {
        Log.i("NotifyService", "got notification");
    }
}

Edit: 两者的属性StatusBarNotifications:

第一个通知:

0|com.whatsapp|1|[email protected]|10073

第二次通知:

0|com.whatsapp|1|null|10073


我不知道为什么会发生这种情况。也许通知标志可能会触发它两次。

您可以尝试自己省略重复执行:

public class NotifyService extends NotificationListenerService {
    private String mPreviousNotificationKey;
    @Override
    public void onNotificationPosted(StatusBarNotification sbn) {
        if(TextUtils.isEmpty(mPreviousNotification) || !TextUtils.isEmpty(mPreviousNotification) && !sbn.getKey().equals(mPreviousNotificationKey)){
        Log.i("NotifyService", "got notification");
    }
}

Each StatusBarNotification具有生成的唯一密钥:

private String key() {
   return user.getIdentifier() + "|" + pkg + "|" + id + "|" + tag + "|" + uid;

}

按住每个先前的键可以区分给定包的后一个通知。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android NotificationListenerService onNotificationPosted 触发两次 的相关文章

  • Android 12:如何防止更改手机壁纸时重新启动活动?

    在 Android 12 上 如果我们开启一个活动 进入手机主屏幕更换壁纸 切换回我们的 Activity 该 Activity 重新启动 看起来它与 Material You 主题有关 我想在我的应用程序进入前台时禁用活动的重新启动 有办
  • doInBackground 运行时是否可以停止 asynctask?

    我正在 ActivityB Oncreate 中创建异步任务 在该任务中 我正在运行无限 while 循环doInBackground 当我转到上一个活动并再次回到该活动时 创建了另一个异步任务 我的问题现在是两个无限 while 循环正在
  • 启动 Twitter 应用程序 [重复]

    这个问题在这里已经有答案了 可能的重复 Twitter 应用程序的 Android Intent https stackoverflow com questions 2077008 android intent for twitter ap
  • 将标题设置为操作栏时出现空指针异常

    Error Caused by java lang NullPointerException Attempt to invoke virtual method void android app ActionBar setTitle java
  • Google Inbox 类似 RecyclerView 项目打开动画

    目前 我正在尝试实现 Google Inbox 例如RecyclerView行为 我对电子邮件打开动画很好奇 我的问题是 该怎么做 我的意思是 他们使用了哪种方法 他们用过吗ItemAnimator dispatchChangeStarti
  • 方法断点可能会大大减慢调试速度

    每当向方法声明行添加断点 在 Intellij IDEA 或 Android Studio 中 时 都会出现一个弹出窗口 方法断点可能会大大减慢调试速度 为什么会这样戏剧性地减慢调试速度 是我的问题吗 将断点放在函数的第一行有什么不同 Th
  • OpenCV InRange 参数

    我在 Android 上使用 OpenCV 来实时查找特定颜色的圆圈 我的第一步是仅保留与我正在寻找的定义颜色相对应的像素 在本例中为红色或绿色 示例图像 https i stack imgur com CIozU jpg 为此 我正在使用
  • 如何在照片删除后刷新 Android 的 MediaStore

    问题 如何使媒体存储刷新其已删除文件的条目 从外部存储中删除代码中的照片后 我仍然在图库中看到已删除照片的插槽 空白照片 画廊似乎反映了媒体存储 并且在媒体存储中找到了已删除的照片 直到手机重新启动或通常 直到重新扫描媒体为止 尝试扫描已删
  • 6:需要显示BuyFlow UI

    There is a problem when i am click on payWithGoogle Button I am implementing Google Pay in my Android Application and wh
  • 如何将单选按钮状态保存到已保存/共享首选项?

    我可以在保存的首选项中保存字符串 但很难保存单选按钮 public class PersonalDetailsf extends Activity private SharedPreferences sharedPreferences pr
  • 在 Android 上的测试用例之外运行 ExtractDecodeEditEncodeMuxTest

    我正在尝试添加在 Android 上提取 解码 编辑 编码和混合视频的功能 因此 我发现了一些非常有用的实现 它是Android CTS的一部分ExtractDecodeEditEncodeMuxTest https android goo
  • Locale.getDefault().getCountry() 返回空字符串

    我正在尝试使用国家 地区代码获取用户语言 例如en US es es 但是当我使用Locale getDefault getCountry 它返回空字符串 虽然它给了我正确的语言Locale getDefault getLanguage N
  • Python Kivy - 在本机网络浏览器中打开 url 的应用程序

    我尝试制作一个简单的应用程序 在单击 Screen One 上的按钮后 在 Kivy 中打开一个网页 我使用了这个主题 Python 在应用程序中直接显示网络浏览器 iframe https stackoverflow com questi
  • 当应用程序未运行时如何堆叠 Firebase Cloud Messaging 通知?

    我在用Firebase Cloud Messaging将推送通知从我的服务器发送到我的 Android 应用程序 当应用程序运行时 通知是stacked因为我将它们设置为我的一个组FirebaseMessagingService 这很好 但
  • 点击监听器的公共类

    我的所有 6 项活动中有 7 个按钮 所有 6 个按钮在所有活动中都具有相同的功能 如何为这 6 个按钮执行通用的单击事件侦听器 您可以创建一个实现 View OnClickListener 的新类 如下所示 public class My
  • Android开发:未定义方法

    大家好 我是 Android 和 Eclipse 的新手 我刚刚遵循了developer android com 上的教程 现在我在添加操作栏 http developer android com training basics actio
  • Android:单一活动,多个视图

    我不是 Android 专业人士 尽管我开发了一个包含 50 多个活动的应用程序 这使得该应用程序非常庞大 经过8周的开发 现在出现了一些问题 导致应用程序难以维护和升级 我正在处理的主要问题是 我无法将对象引用传递给活动的构造函数 事实上
  • Jetpack Compose 部分或开放侧边框

    我正在尝试绘制部分或一侧开放的矩形圆形边框以实现此效果 玩了一下之后我得到了这个 这是通过以下方式完成的 RoundedCornerShape topStartPercent 50 bottomStartPercent 50 start R
  • Android应用程序kill事件捕获

    我想在我的应用程序被终止时执行一些操作 可以使用哪种方法来实现此目的 我正在开发 Android 5 0 这个问题的关键在于 您必须了解您的申请是否可以收到任何 当您的应用程序在任何情况下被终止时的额外回调 下面的答案是由德文连线 http
  • Android:获取最新意图

    如何获取发送到活动的最后一个意图 的文档onNewIntent 建议我需要做这样的事情 class MyActivity public void onNewIntent Intent intent setIntent intent reac

随机推荐

  • 如何突出显示 JLabel 的一部分?

    在任何人建议 HTML 之前 我稍后会解释为什么这里不选择 HTML 我有一个表 其中包含一列 其中包含文本单元格 我需要能够突出显示每个单元格中的一些文本 例如 如果单元格包含 cat foo dog 我可能想突出显示 foo 我当前的方
  • 设备未收到 Firebase 云消息通知

    我在使用 FireBase 云消息传递时遇到问题 我从设备获取令牌并通过 Google Firebase 通知控制台发送通知测试 但是 通知从未记录或推送到 Android 虚拟设备 FCM 的文档几乎与我下面的代码完全相同 几乎没有其他内
  • 如何解析字典字符串?

    我正在尝试将字符串转换为字典dict函数 像这样 import json p id 12589456 d dict p print d id 但我收到以下错误 ValueError dictionary update sequence el
  • Datatables 1.10 通过 jquery“检查全部”

    我知道这可能看起来很原始 但我一整天都在尝试实现它 也许是因为我无法完全理解如何使用 API 我正在使用 DataTables 1 10 0 我有一个带分页的表功能 每一行都有一个复选框 我需要一个 检查所有按钮 来检查所有页面中的所有复选
  • 通过参数列表过滤 SQL 查询

    我有一个查询 我想返回与值列表关联的所有行 您可以非常简单地将其写为 select from TableA where ColumnB in 1 2 3 5 我可以在 C 中生成此查询并执行它 然而这显然不太理想 因为它不使用参数 在尝试缓
  • 从片段在我的工具栏上设置副标题

    我在从片段设置工具栏中的副标题时遇到一些问题 我在 setSubTitle 处不断收到空指针异常 Override public void onActivityCreated Bundle savedInstanceState super
  • 如何一起使用 mongoose unique、skip 和 limit

    我需要使用skip and limit用于分页 以及distinct因为不返回相等的值 If i use MyModel find distinct blaster function err results res render index
  • 选择控制设置初始值

    我们知道 随着InputSelect我们不能同时使用 bind value 和 onchange 但如果我们使用后者 与select反而InputSelect 我们如何设置与第一个不同的初始值 例如 在此示例中设置为 2018 年 变量的值
  • 根据另一个指定拒绝列表条件的 DataFrame 过滤 Spark DataFrame

    我有一个largeDataFrame 多列和数十亿行 和smallDataFrame 单列和 10 000 行 我想过滤所有行largeDataFrame每当some identifier栏目中的largeDataFrame匹配中的某一行s
  • 使用自定义键对 python 中的元组进行排序

    你好 我正在尝试以自定义方式对元组列表进行排序 例如 lt 2 4 4 5 5 2 必须排序 lt 5 2 2 4 4 5 Rules 如果 a 1 b 0 则 b 元组大于 a 元组 如果 a 0 b 1 a 元组大于 b 元组 我已经实
  • Unix 单行交换/调换多个文本文件中的两行?

    我希望使用 sed 或 awk 等 UNIX 工具根据多个文本文件中的行号交换或转置行对 例如 交换第 10 行和第 15 行的位置 例如 我相信这个 sed 命令应该在单个文件中交换第 14 行和第 26 行 sed n 14p infi
  • .NET - WindowStyle = 隐藏 vs. CreateNoWindow = true?

    当我开始一个新流程时 如果我使用 WindowStyle Hidden or the CreateNoWindow true 的财产ProcessStartInfo class 正如Hans所说 WindowStyle是传递给进程的一个建议
  • R 网络图中的顶点框架宽度

    我的问题如下here 关于如何更改 igraph 中的顶点框架宽度 随着 igraph 的更新 建议的解决方案似乎不再有效 有人有解决方案吗 或者可能知道另一个为网络提供可变顶点帧宽度的包 Thanks 您可以定义具有框架宽度参数的新顶点形
  • 当存在 32 位 Office 时手动安装 64 位 MS Access ODBC 驱动程序

    我想要手动安装 MS Access 64 位 odbc 驱动程序 由于我们公司使用的加载项 无法卸载 32 位 Office 并安装 64 位 Office 我下载了 AccessDatabaseEngine x64 exe 并使用 Win
  • MySQL/写入文件错误(错误代码 28)

    我的一个网络应用程序出现以下错误 Query3 failed Error writing file tmp MY1fnqpm Errcode 28 INSERT MailList removed the rest of the query
  • 如何格式化“角矩”的“am-time-ago”指令?

    现场演示 我用am time ago显示相对时间戳的指令 span span 默认情况下 其格式为 一天前 5 天前 等 如何将格式更改为 1d 5d 3h 等 您可以在配置或应用程序启动的某个位置自定义人性化 moment lang en
  • 如何从 Jmeter 执行 java 类

    有没有办法从jmeter执行java类 我已经用maven程序集打包了我的类 并将其放在JMETER HOME的lib文件夹中 然后我在测试用例中创建了 BSF Listener 并写道 import my package name App
  • Bash:保留命令行上输入的带有空格的字符串? [复制]

    这个问题在这里已经有答案了 我想允许用空格捕获字符串 以便 echo n Enter description read input echo input 会产生 gt Enter description My wonderful descr
  • 如何在Webpack中加载SVG图像?

    我想使用加载 SVG 文件svgo 加载程序在 Webpack 中 但出现以下错误 css loader modules localIdentName 名称 中出现错误 local 散列 base64 5 autoprefixer load
  • Android NotificationListenerService onNotificationPosted 触发两次

    我收听 WhatsApp 消息等通知 但每次有通知进入时 NotificationListenerService 都会触发两次 有谁知道这个问题吗 这是 AndroidManifest xml 中的一个片段