使用Samck的jid获取昵称/用户名

时间:2013-08-06 15:34:06

标签: xmpp smack

使用Smack,我如何使用Smake从JID获取昵称/用户名。

注意,JID不在我的烘焙器中。

感谢。

3 个答案:

答案 0 :(得分:0)

使用Smack的String Utils来解析JID的名称部分

Smack Docs String Utils

String name = StringUtils.parseName(JID);

当你说它不在你的名册中时,你是如何通过JID的?你是从消息中得到的吗?

答案 1 :(得分:0)

对于面临这个问题的其他人来说可能为时已晚 来自smack:4.2.0

您可以使用JID单独获取所有部件。

如果你有像abcd @ xyzPc-599这样的JID

String local = XmppStringUtils.parseLocalpart(userObject.getUserId().toString());

Log.d(TAG, local); // print abcd

String domain = XmppStringUtils.parseDomain(userObject.getUserId().toString());

Log.d(TAG, domain); // print xyzPc-599

您可以查看XmppStringUtils的代码。

希望对某人有所帮助......

答案 2 :(得分:0)

我们可以使用JID获取昵称,但我们必须在VCARD中添加所有用户

String nickname = smackHelper.getNickname(from);


public String getNickname(String jid) throws SmackInvocationException {
    VCard vCard = vCardHelper.loadVCard(jid);

    return vCard.getNickName();
}


public VCard loadVCard(String jid) throws SmackInvocationException {
    VCard vCard = new VCard();
    try {
        vCard.load(con, jid);

        return vCard;
    } catch (Exception e) {
        throw new SmackInvocationException(e);
    }
}