Android:确定是否收到广播

时间:2012-08-05 19:24:31

标签: android broadcastreceiver android-c2dm google-cloud-messaging

我正在讨论讨论图片的聊天应用程序。 当我收到c2dm消息时,有效负载包含消息和md5,用于标识此消息的图片。当具有匹配的md5的ChatActivity在前台时,我想只播放声音。如果不是,我想在通知栏中添加通知。

这与whatsapp的行为相同。如何实现这个?

1 个答案:

答案 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,但结构的其余部分几乎相同。