2017-10-19 49 views
0

首先,我是如何阅读通知中的WhatsApp消息的?如何区分两个WhatsApp消息?

好吧,我研究并已能够实现与适当的权限NotificationListenerService没有秘密的策略,任何),并听取WhatsApp的通知消息。积分为this guy给我这个想法。

无论如何,我现在可以阅读邮件,但问题是WhatsApp有时会多次发送相同的邮件,但不会显示多个通知。我怎么知道?

我记录了听众收到的通知,发现了几条相同的消息。通知一般结构看起来是这样的:

StatusBarNotification.toString(): 

> 10-18 23:43:24.236 16159-16181/com.company D/WhatsApNotifListService: 
> StatusBarNotification(pkg=com.whatsapp user=UserHandle{0} id=1 
> tag=null score=0 key=0|com.whatsapp|1|null|10170: Notification(pri=0 
> contentView=com.whatsapp/0x1090078 vibrate=null sound=null 
> defaults=0x0 flags=0x200 color=0xffe65100 category=msg 
> groupKey=group_key_messages vis=PRIVATE 
> publicVersion=Notification(pri=0 contentView=com.whatsapp/0x1090078 
> vibrate=null sound=null defaults=0x0 flags=0x0 color=0xffe65100 
> category=msg vis=PRIVATE))) 

Notification.extras(A包)结构:

> 10-18 23:42:46.199 16159-16211/com.company D/Util: android.title 
> Manish (java.lang.String) 
> 
> 10-18 23:42:46.199 16159-16211/com.company D/Util: android.subText 
> null (null) 
> 
> 10-18 23:42:46.201 16159-16211/com.company D/Util: 
> android.car.EXTENSIONS Bundle[mParcelledData.dataSize=1852] 
> (android.os.Bundle) 
> 
> 10-18 23:42:46.201 16159-16211/com.company D/Util: 
> android.showChronometer false (java.lang.Boolean) 
> 
> 10-18 23:42:46.202 16159-16211/com.company D/Util: android.icon 
> 2130840435 (java.lang.Integer) 
> 
> 10-18 23:42:46.202 16159-16211/com.company D/Util: android.text Bdbdjd 
> (java.lang.String) 
> 
> 10-18 23:42:46.202 16159-16211/com.company D/Util: android.progress 0 
> (java.lang.Integer) 
> 
> 10-18 23:42:46.202 16159-16211/com.company D/Util: android.progressMax 
> 0 (java.lang.Integer) 
> 
> 10-18 23:42:46.202 16159-16211/com.company D/Util: android.showWhen 
> true (java.lang.Boolean) 
> 
> 10-18 23:42:46.202 16159-16211/com.company D/Util: 
> android.rebuild.applicationInfo ApplicationInfo{1a7615bc com.whatsapp} 
> (android.content.pm.ApplicationInfo) 
> 
> 10-18 23:42:46.202 16159-16211/com.company D/Util: android.largeIcon 
> [email protected] (android.graphics.Bitmap) 
> 
> 10-18 23:42:46.202 16159-16211/com.company D/Util: android.infoText 
> null (null) 
> 
> 10-18 23:42:46.202 16159-16211/com.company D/Util: 
> android.wearable.EXTENSIONS Bundle[mParcelledData.dataSize=668] 
> (android.os.Bundle) 
> 
> 10-18 23:42:46.202 16159-16211/com.company D/Util: 
> android.originatingUserId 0 (java.lang.Integer) 
> 
> 10-18 23:42:46.202 16159-16211/com.company D/Util: 
> android.progressIndeterminate false (java.lang.Boolean) 

有没有办法像Id或东西,可以提取区分两个消息?

+0

也许你可以存储以前的消息,并检查它们是否存在。如果不相等,您可以清除消息缓存,并将其替换为最新的已知消息?一个人不可能多次发送相同的消息。我只是说这个想法,它可能不适合你的需求。 –

+0

提取消息后,你保留它们? – Xenolion

+0

你在视图中展示它们或将它们保存在某个地方? – Xenolion

回答

1

我不相信我解决了我的问题。时间戳是答案。信用可以通过@xenolion建议时间。我的想法已经预先设定了时间不同的概念,但我只是检查了消息的时间戳,而相同的消息有相同的时间戳。

+0

**快乐编码!** – Xenolion

相关问题