【问题标题】:How to get current user's name in smack如何在 smack 中获取当前用户的姓名
【发布时间】:2012-04-02 14:07:47
【问题描述】:

我从 openfire 管理页面创建了一个用户。我已经输入了用户名、NAME、电子邮件、密码。

我正在用 Android 编写一个客户端。如何获取当前用户的 NAME?我努力了: (1) connection.getuser() - 它返回:peter@www.abc.com/smack (2) 获取自我 vcard - 它不返回与 NAME 相关的任何内容

我可以通过 RosterEntry.getName() 获取其他用户的名字。但是如何获取当前用户的名字呢?

另外,是否可以获取当前用户的状态? (如presence.getStatus())

【问题讨论】:

    标签: java android xmpp openfire smack


    【解决方案1】:

    你可以通过AccountManager通过getAccountAttribute获取当前用户的名字,然后指定属性的名字。在这种情况下它是名称”。这是简单打印当前用户名称的代码

    System.out.println("name = " + connection.getAccountManager().getAccountAttribute("name"));
    

    关于您的第二个问题,您当然可以使用 roster.getPresence 了解其他用户在您的名册中的存在。这里用一个简单的循环来说明这个方法的使用

     for(RosterEntry r:entries) {
            Presence presence = roster.getPresence(r.getUser());
            System.out.println(presence.toXML());
        }
    

    【讨论】:

    • 谢谢,这就是我想做的事情
    • 另外,我想获取当前用户的状态,而不是“for(RosterEntry r:entries)”中的用户。能找到吗?
    • 现在,由于 Smack 的变化,应该使用 AccountManager.getInstance(connection) 而不是 connection.getAccountManager()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 2014-08-21
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    相关资源
    最近更新 更多