当前位置: 首页 > 知识库问答 >
问题:

Android通知监听器复制地狱

孔乐邦
2023-03-14

需要一点帮助--这把我累坏了!

我是ReadItToMe的开发人员,这是一款可以读出你的留言并让你通过语音回复的应用程序。去年我一直面临的问题是重复的通知。我将以WhatsApp为例。

我尝试过的解决方案:

>

  • 在通知到达时使用通知的标题、消息和包名称创建通知的哈希代码,然后在通知被解除时将其从列表中删除(onNotificationRemoved),从而保持通知列表的读取状态。但我知道什么!在上述场景中,所有通知都被删除,然后重新发布,因此此解决方案是无用的。

    >

  • 比较时间戳,这不起作用,因为重复通知有新的时间戳

    检查通知是否是一个组(至少忽略它)是不起作用的,因为第一个通知总是一个组。只有当有多个通知时,“组”实际上是一个包含类似“2个新消息”内容的组。

    有没有人知道任何方法或能想到任何创造性的解决方案来准确地确定(80%的准确率就可以了)哪些通知是真正的新通知,哪些是以前发布过的?还是这在Android上根本就坏了...

  • 共有1个答案

    梁豪
    2023-03-14

    我也有同样的问题,我用这种方法修正了它,你可以用“when”属性结合save-when使用:

    public void onNotificationPosted(StatusBarNotification sbn) {    
    if (System.currentTimeMillis() - sbn.getNotification().when > 3000 ||
                    isInArray(sbn.getNotification().when)) {
                //when != sbn.getPostTime()
                //If notification is 3 seconds old, it is discarted
                return;
            } else {
                //Else, push to the array of notifications "when-id" to compare next time
                goNextPosition(sbn.getNotification().when);
            }
    ... next part of code
    }
    

    当时间戳与此通知相关时为长,以自纪元以来的毫秒为单位。默认值:now。选择与用户最相关的时间戳。对于大多数有限事件,这对应于事件发生的时间(或将发生的时间,如果事件尚未发生,但用户已被告知)。不确定事件应根据活动开始的时间标记。

    https://developer.android.com/reference/android/app/notification.html#当

    如果有人有这个问题,尽管问我,对不起,我是西班牙人。

     类似资料:
    • 我使用一个JTextField,其中我过滤输入进来通过REGEXs和通知用户(背景颜色变化),然后推动更新出一个套接字(字符的字符,而不是一个'点击进入当你完成'的行为,按规格) 问题是,由于没有保证DocumentListener通知的顺序,我不能将更新的传输和更新的验证放在同一种侦听器上。不同类型的监听器(KeyListener vs DocumentListener vs…)之间是否有任何保

    • 问题内容: 我想将Listener放在上。我寻找信息,它是这样的: 问题在于Eclipse认为它是的,并且不起作用。我怎样才能解决这个问题? 问题答案: 你可以这样做:

    • 我正在尝试创建一个应用程序,使用新的Android服务来读取所有通知,也可以删除它们,但它并不起作用。在我的舱单上: 我有一个类NotificationListener扩展了NotificationListenerService我重写了两个方法OnNotificationPost(StatusBarNotification sbn)、onNotificationRemoved(StatusBarN

    • 问题内容: 我想检查Android手机的网络何时关闭。我可以捕获该事件吗? 我没有得到正确的API或任何可以解释相同内容的示例。如果有人做过或有任何示例链接将非常有帮助。 问题答案: 新的Java类: 你的AndroidManifest.xml中“ manifest”元素下的新xml: 你的AndroidManifest.xml中“ application”元素下的新xml:

    • 我想使用自定义图标和c标记的地方 重写markerclick函数,并尝试获取该标记的标记,因为我存储在该标记中,在此之前,我使用了.equal方法来测试该标记是否等于该事件标记 我希望当我点击标记应该商店

    • > 在netstat中,端口只监听环回地址 [root@elk~]#netstat-tnlpu | grep 9200 tcp6 0 0 127.0.0.1:9200:::*侦听14968/java tcp6 0 0::1:9200:::*侦听14968/java