获得在Android的聊天应用程序离线消​​息与使用asmack库 [英] Getting offline messages in android chat application with use of asmack library

查看:226
本文介绍了获得在Android的聊天应用程序离线消​​息与使用asmack库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用asmack库我的聊天application.I正在使用下述code获取messagecount:

I am using asmack library for my chat application.I am using below described code for getting messagecount:

ServiceDiscoveryManager manager = ServiceDiscoveryManager.getInstanceFor(connection);
                 DiscoverInfo info = manager.discoverInfo(null,"http://jabber.org/protocol/offline");
                    Form extendedInfo = Form.getFormFrom(info);
                    if (extendedInfo != null) {
                        String value = extendedInfo.getField("number_of_messages").getValues().next();
                        Log.e(TAG, "offline message"+value);


                    }

不过,如下所述,我得到异常:

But i got exception as described below:

09-14 16:11:32.892: ERROR/AndroidRuntime(498):     at com.datingapps.breaktheice.SigninScreen.coonectToChat(SigninScreen.java:393)
09-14 16:35:20.611: WARN/System.err(538): java.lang.ClassCastException: org.jivesoftware.smack.util.PacketParserUtils$2
09-14 16:35:20.811: WARN/System.err(538):     at org.jivesoftware.smackx.ServiceDiscoveryManager.discoverInfo(ServiceDiscoveryManager.java:608)
09-14 16:35:20.811: WARN/System.err(538):     at com.datingapps.breaktheice.Chat$connectionTask.doInBackground(Chat.java:286)
09-14 16:35:20.811: WARN/System.err(538):     at com.datingapps.breaktheice.Chat$connectionTask.doInBackground(Chat.java:1)
09-14 16:35:20.811: WARN/System.err(538):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
09-14 16:35:20.811: WARN/System.err(538):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
09-14 16:35:20.821: WARN/System.err(538):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
09-14 16:35:20.821: WARN/System.err(538):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
09-14 16:35:20.821: WARN/System.err(538):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
09-14 16:35:20.821: WARN/System.err(538):     at java.lang.Thread.run(Thread.java:1096)

谁也实现了它与asmack或有嫌LIB替代解决方案任何人, 请帮我走出这个问题。

Anybody who have implemented it with asmack or have alternate solution with smack lib, Please help me to get out of this problem.

推荐答案

谷歌搜索和搜索的文件后,我得到了offlinemanager获取离线消息。

After Googling and searching in documentation,All i got that offlinemanager for getting offline messages.

不过,但是它不工作在asmack或可能是smack.It总是返回0的消息。

But However it is not working in asmack or may be in smack.It always return 0 message.

最后通过看日志,我发现,每一个当我登录我得到了很多,从聊天服务器的响应也包含离线消息,但领带消息标记没有离线消息tag.So我终于找到

Finally by seeing logs i found that each tie when i login i got lot of response from chat server which also contains offline message but with message tag not offline message tag.So I found finally

您可以通过直接设置数据包监听器后,只需登录。至于下面我描述数据包侦听器,你必须登录方法后,实施从它那里得到离线消息。

You can get offline messages from it by directly setting packet listener after just login .As i below described packet listener you have to implement after login method.

        PacketFilter filter = new MessageTypeFilter(Message.Type.chat);
        this.connection.addPacketListener(new PacketListener() {
            public void processPacket(Packet packet) {

                Message message = (Message) packet;
                if (message.getBody() != null) {
                    String fromName = StringUtils.parseBareAddress(message
                            .getFrom());
                    Log.i("XMPPClient", "Got text [" + message.getBody()
                            + "] from [" + fromName + "]");
                    if (fromName.equalsIgnoreCase(matchUserJabberId
                            + "server name")) {


                        // }
                    }
                }
            }
        }, filter);

希望这将帮助很多人找到离线消息周围的工作早在我投入了更多的时间来把它弄出来。

Hope it will help many to find a work around for offline message early as i invested more time to get it out.

这篇关于获得在Android的聊天应用程序离线消​​息与使用asmack库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆