如何知道asmack中的消息发送失败

时间:2014-07-23 13:51:43

标签: android xmpp asmack

我正在尝试使用asmack发送消息,我在log cat中收到这样的错误:

07-23 13:44:45.759: D/SMACK(20581): RCV (0): <message from='139@192.168.10.241' to='143@192.168.10.241/false' type='error' id='7DOua-233'><body>dgvvvcvcvhcbfbfvgchcbgbhgbhvnhbnvbvbhgbbbbhvbcnvbvbvbvvvcbvcbv hvvvbcvbbhnhjbnnvjbbnnnvnhbnbbbnnn</body><error code='500' type='wait'><resource-constraint xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/><text xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'>Your contact offline message queue is full. The message has been discarded.</text></error></message>

这是代码:

if(mConnection!=null)
                {
                    Message msg = new Message(params[0], Message.Type.chat);
                    msg.setBody(params[1]);  
                    try
                    {
                        System.out.println("sending..");
                        mConnection.sendPacket(msg);
                        System.out.println("sent!"+msg.getBody());
                        System.out.println("sent!"+msg.getTo());
                        flag=true;
                    }
                    catch(Exception e)
                    {
                        System.out.println("Exception:"+e);
                    }
                }

如何在我自己的try catch块中捕获上面的log cat错误?在当前情况下,即使消息发送失败,它也会返回true。如何判断消息发送是否由于上述错误而失败。

2 个答案:

答案 0 :(得分:2)

添加数据包侦听器并检查收到的数据包类型。如果出现错误,则表示您的邮件未送达。

答案 1 :(得分:-1)

在您的xmpp服务器中,转到离线消息设置并设置一个非常高的限制,用于存储1024 KB等离线消息,并检查始终存储消息,即使已达到最大大小。

希望这有效!