2

我正在开发使用GCM概念的聊天类型应用程序。我成功地发送消息给我的朋友谁也注册和使用我的应用程序。我正在将对话存储在SQLite两边。意味着当发送者发送消息并且接收者接收到消息时,则对话被存储在双方。现在我想要什么,如果我的'X'朋友打开聊天图形用户界面并向该朋友发送消息'X',并且几秒钟后如果新消息从同一个朋友'X'到达,那么我可以同时更新GUI收到通知时更新当前UI

我想出了this教程,并成功更新了GUI。但我的问题是,我怎么才能知道我目前聊天的对象是谁?意思是当消息到达时,我的GUI将被更新,但如果我收到来自其他朋友'Y'的消息,那么GUI不应该更新(因为聊天GUI与朋友'X'的对话打开)。它应该在通知中,当我点击该通知时,只有在与该'Y'朋友聊天时才应该更新。我怎样才能做到这一点?我还附带了这段代码,以了解哪些活动处于顶端。

ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); 
// get the info from the currently running task 
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); 
Log.d("topActivity", "CURRENT Activity : " + taskInfo.get(0).topActivity.getClassName()); 
ComponentName componentInfo = taskInfo.get(0).topActivity; 
componentInfo.getPackageName(); 

但没有得到如何解决问题。帮助将不胜感激。

回答

0

当前聊天页面与用户x或y关联。每当您收到gcm服务的消息时,您可以更新(如果聊天是与当前聊天页面相同的用户),否则,您可以更新当前活动,说明其他用户发送了消息,或者如果应用程序未运行或处于任何活动状态,通知。共享首选项可用于设置当前用户的唯一ID和当前活动的详细信息,以便您的gcm接收器知道该怎么做。

+0

亚朋友...但问题是如何知道谁是当前的发件人和接收器? –

+1

将该信息放入消息{from:'x',msg:'blah blah'}。你必须知道你在和谁谈话? –

+0

是的,让我告诉你一件事,我也通过这个消息传递了这个名字。所以现在当收到消息时,首先它将被存储在接收端的数据库中。所以我想我需要检查条件并将该消息名称与最后一次输入db进行比较。如果两个r相同,那么GUI应该更新,否则不是......我是正确的阿比亚? –

0

你可以创建1个方法,它是fillListchat()。当消息到达时,那个特定方法调用线程并在handler.so中设置GUI,每当你打开你的朋友列表像x,y或z那么这个列表将会我希望它对你有用...

+0

可以详细说明@dipali吗? –

+0

你说什么?..... – dipali

+0

我在说,你可以详细解释你的想法..我没有得到你想解释的。谢谢你... –