如何使用Smack在聊天中通过XMPP发送联系人?

3

我正在开发一款Android聊天应用程序。在这个应用程序中,我想像WhatsApp/Telegram一样从发送者向接收者发送联系人。我知道XMPP中有Vcard XEP,但我不知道如何使用它。请问有谁可以帮助我吗? 提前致谢。

2个回答

0

要获取联系人,首先需要在vcard中保存条目,然后使用loadVCard来获取联系人。

public class SmackVCardHelper {
        public static final String FIELD_STATUS = "status";

        private Context context;
        private XMPPConnection con;

        public SmackVCardHelper(Context context, XMPPConnection con) {
            this.context = context;
            this.con = con;
        }

        public void save(String nickname, byte[] avatar) throws SmackInvocationException {
            VCard vCard = new VCard();
            try {
                vCard.setNickName(nickname);
                if (avatar != null) {
                    vCard.setAvatar(avatar);
                }
                vCard.setField(FIELD_STATUS, context.getString(R.string.default_status));
                vCard.save(con);
            } catch (Exception e) {
                throw new SmackInvocationException(e);
            }
        }

        public void saveStatus(String status) throws SmackInvocationException {
            VCard vCard = loadVCard();
            vCard.setField(FIELD_STATUS, status);

            try {
                vCard.save(con);
            } catch (Exception e) {
                throw new SmackInvocationException(e);
            }
        }

        public String loadStatus() throws SmackInvocationException {
            return loadVCard().getField(FIELD_STATUS);
        }

        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);
            }
        }

        public VCard loadVCard() throws SmackInvocationException {
            VCard vCard = new VCard();
            try {
                vCard.load(con);
                return vCard;
            } catch (Exception e) {
                throw new SmackInvocationException(e);
            }
        }
     }

请不要仅仅回答代码。请解释它,以便问题提出者和其他人可以从中学习。 - Jens

0

您只能将信息作为文档发送。您可以在文档中发送一个特殊的键,如果您发现该键,则触发一个意图,使用文档中的数据添加联系人。如果您需要编码帮助,请告诉我。


谢谢你的努力。是的,你能给个示例代码吗? - Rkreddy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接