拒绝 Xmpp 中的请求 - 从名册中删除条目

Posted

技术标签:

【中文标题】拒绝 Xmpp 中的请求 - 从名册中删除条目【英文标题】:Denying Request in Xmpp - Remove Entry from roster 【发布时间】:2013-03-06 07:50:54 【问题描述】:

在 XMPP 中,当我向其他用户发送好友请求时,如果其他人想要拒绝它,则应该删除名册中的条目,但我无法删除用户的条目。它给了我强制关闭(空指针异常)

这是我的拒绝按钮代码

btn_Deny = (Button)findViewById(R.id.btn_manageNotification_DENY);
        btn_Deny.setOnClickListener(new View.OnClickListener() 

            @Override
            public void onClick(View arg0) 
                Presence unsubscribe = new Presence(Presence.Type.unsubscribed);
                unsubscribe.setTo(id);              
                connection.sendPacket(unsubscribe);

                /*String message = mXmconn.removeFriend(subID, CMMStaticVariable.CommonConnection);
                System.out.println(message);*/

                Intent returnBack = new Intent(ManageNotification.this, UserMenuActivity.class);
                startActivity(returnBack);
                finish();               
            
        );     
    

删除好友

public String removeFriend(String jid, XMPPConnection connection)
        roster = connection.getRoster();
        String message = "";
        try 
            RosterEntry rosterEntry = roster.getEntry("chamak@abec.info.com");
            System.out.println("rosterEntryy"+rosterEntry.toString());

            roster.removeEntry(rosterEntry);
            message = "You have denied the friend request";
         catch (XMPPException e) 
            e.printStackTrace();
            message = "Exception";
        
        return message;
    

它在 rosterEntry = null 处给出空指针;

谢谢

【问题讨论】:

【参考方案1】:

XMPP-CORE 定义服务器在拒绝订阅请求时必须从用户名册中删除名册项。因此,当您尝试请求时,该项目甚至不应该存在。

来自规范:

注意:如果联系人的服务器之前将用户添加到联系人的名册以进行跟踪,则此时必须删除相关项目。

您可以阅读更多here。

【讨论】:

但是没有状态的名册项根本没有删除,而是在名册条目处给了我空指针异常。谢谢

以上是关于拒绝 Xmpp 中的请求 - 从名册中删除条目的主要内容,如果未能解决你的问题,请参考以下文章

如何确定 XMPP 中接受或拒绝联系请求?

如何在名册中添加联系人而不在 xmpp 聊天中发送和接受订阅请求

iOS XMPP 从不接收任何好友/名册请求

XMPP - 名册订阅说明

XMPP 框架:无法接收我的消息

XMPP之添加好友请求报文