【问题标题】:how to send contacts over xmpp using smack in a chat?如何在聊天中使用 smack 通过 xmpp 发送联系人?
【发布时间】:2016-05-24 12:50:26
【问题描述】:

我正在用 android 开发一个聊天应用程序。我想将联系人从发件人发送到收件人,类似于whatsapp/telegram。我知道xmpp中有Vcard XEP。但我不知道如何使用它。请任何人帮助我。 提前致谢。

【问题讨论】:

    标签: android xmpp smack vcf-vcard


    【解决方案1】:

    您必须仅将信息作为文件发送。您可以做的是在文档中发送一个特殊的密钥,如果您发现该密钥会触发使用文档中的数据添加联系人的意图。如果您需要代码方面的帮助,请告诉我。

    【讨论】:

    • 感谢您的努力。是的,你能给出它的示例代码吗?。
    【解决方案2】:

    要获得联系最需要在 vacrd 中输入save,以获取联系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);
                }
            }
         }
    

    【讨论】:

    • 请不要只添加代码作为答案。解释一下,让OP和其他人学习
    猜你喜欢
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    相关资源
    最近更新 更多