我正在讨论讨论图片的聊天应用程序。 当我收到c2dm消息时,有效负载包含消息和md5,用于标识此消息的图片。当具有匹配的md5的ChatActivity在前台时,我想只播放声音。如果不是,我想在通知栏中添加通知。
这与whatsapp的行为相同。如何实现这个?
答案 0 :(得分:2)
让ChatActivity
注册BroadcastReceiver
以接收C2DM消息,此外还要为C2DM消息提供现有的清单注册BroadcastReceiver
。让IntentFilter
ChatActivity
使用的registerReceiver()
使用setPriority()
的正值,默认值为0.在registerReceiver()
中使用onResume()
或onStart()
,并在unregisterReceiver()
或onPause()
中使用onStop()
。
结果是,当C2DM消息到达时,如果您的ChatActivity
位于前台,由于优先级较高,它将首先获取消息。它可以检查消息是否与其图像有关。如果是,ChatActivity
' s BroadcastReceiver
可以调用abortBroadcast()
,以防止您的标准优先级清单注册的接收者获得广播。因此,如果您的舱单注册接收器 获得广播,您知道前台中没有相关的ChatActivity
,并且它可以提升Notification
。
Here is a sample app展示了大部分内容。广播来自应用程序本身,而不是C2DM,但结构的其余部分几乎相同。