首先,我是如何阅读通知中的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或东西,可以提取区分两个消息?
也许你可以存储以前的消息,并检查它们是否存在。如果不相等,您可以清除消息缓存,并将其替换为最新的已知消息?一个人不可能多次发送相同的消息。我只是说这个想法,它可能不适合你的需求。 –
提取消息后,你保留它们? – Xenolion
你在视图中展示它们或将它们保存在某个地方? – Xenolion