2017-10-19 7 views
0

まず、通知からWhatsAppメッセージをどのように読み取ったのですか?2つのWhatsAppメッセージを区別するにはどうすればよいですか?

はまあ、私が調査し、適切なアクセス許可(全くなし人手不足の戦略)とNotificationListenerServiceを実装してのWhatsAppからの通知メッセージを聞くことができました。私にこの考えを与えてくれたことを信じて、this guyに行きます。

とにかく、私は今メッセージを読むことができますが、Wh​​atsAppは明らかに同じメッセージを複数回送信することがありますが、複数の通知は表示されません。どのように私は知っていますか?

リスナーが受信した通知を記録し、いくつかの同一のメッセージが見つかりました。

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(バンドル)構造:

> 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) 

2つのメッセージを区別するために抽出することができるIDや何かのようなどのような方法があります通知の一般的な構造は次のようになりますか?

+0

おそらく以前のメッセージを保存し、それらが存在するかどうかを確認できます。それらが等しくない場合は、メッセージキャッシュをクリアして最後の既知のメッセージに置き換えることができます。ある人が同じメッセージを複数回送信することはまずありません。私はちょうどアイデアを言っている、それはあなたのニーズに合わないかもしれません。 –

+0

メッセージを抽出したら、どこに保管しますか? – Xenolion

+0

ビューに表示するか、どこかに置いておきますか? – Xenolion

答えて

1

私は私の問題を解決したとは思えません。タイムスタンプが答えでした。時間を示唆するために、クレジットは@xenolionに行きます。私の心は、時間についての先入観を前提にしていましたが、私はメッセージのタイムスタンプをチェックしました。同じメッセージには同じタイムスタンプがあります。

+0

**ハッピーコーディング!** – Xenolion

関連する問題