Android 如何从GCM获取消息并在活动中显示?

Android 如何从GCM获取消息并在活动中显示?,android,google-cloud-messaging,Android,Google Cloud Messaging,我正在进行聊天活动,向我的服务器发送消息,并向GCM发送服务器消息。GCM发回,我的GcmBroadcastReceiver将其捕获。当我捕获消息时,我会在android中显示一个通知 如果我正在与某人交谈并收到一条消息,我只想在该活动中显示新消息,但我不知道如何操作。我正试图为我的公司做一些类似WhatsApp的事情,我们不想使用付费服务 我已尝试在我的GCMinentService中创建活动,但未成功: private void sendNotification(String msg) {

我正在进行聊天活动,向我的服务器发送消息,并向GCM发送服务器消息。GCM发回,我的GcmBroadcastReceiver将其捕获。当我捕获消息时,我会在android中显示一个通知

如果我正在与某人交谈并收到一条消息,我只想在该活动中显示新消息,但我不知道如何操作。我正试图为我的公司做一些类似WhatsApp的事情,我们不想使用付费服务

我已尝试在我的GCMinentService中创建活动,但未成功:

private void sendNotification(String msg) {

    Intent intent = new Intent(this,
            ChatActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    this.startActivity(intent);
 }
知道如何获取当前活动并显示带有新消息的新行吗?我可以让当前活动在列表中添加新字符串吗


提前感谢。

这实际上比简单地开始一项活动要复杂一些

假设用户当前正在查看包含聊天消息列表的活动。当推送通知到达时,您必须以某种方式通知该活动有新的聊天信息,并将其添加到现有聊天信息列表中。这在Android中是一个正常的问题,您需要让一部分代码与另一部分代码进行通信,而这部分代码之间不存在或不应该存在相互引用

有几种方法可以做到这一点。就实际需要编写的代码量而言,最简单的解决方案之一可能是实现自己的
LocalBroadcast
。其工作方式是将聊天活动注册为特定事件的侦听器,例如,“new_chat_message_received”。当您的GcmBroadcastReceiver收到新聊天消息的通知时,它将在本地重新广播该消息,因此,您的活动将收到该事件的通知。一旦发生这种情况,您的所有活动所要做的就是将此新的聊天信息添加到现有的聊天信息列表中


如果您想了解如何实现这一点的详细信息,可以查看本教程,其中有一个关于LocalBroadcasts()的特别部分,也可以查看StackOverflow的回答,该回答也很好地解释了如何编写LocalBroadcast()

谢谢。我在这里读了一些帖子,我开始考虑使用XMPP进行真正的即时消息传递,而不是尝试推送通知。你怎么看?我以前从未使用过XMPP,所以我不知道在这种情况下它相对于推送通知的优点/缺点。也许你可以问一个新问题。你知道使用GCM在WhatsApp这样的用户之间发送消息是不是一个好的做法吗?看看这个:-有很多关于何时使用GCM的例子。此外,使用XMPP似乎也有一个特殊的问题。