【发布时间】:2016-05-24 12:50:26
【问题描述】:
我正在用 android 开发一个聊天应用程序。我想将联系人从发件人发送到收件人,类似于whatsapp/telegram。我知道xmpp中有Vcard XEP。但我不知道如何使用它。请任何人帮助我。 提前致谢。
【问题讨论】:
标签: android xmpp smack vcf-vcard
我正在用 android 开发一个聊天应用程序。我想将联系人从发件人发送到收件人,类似于whatsapp/telegram。我知道xmpp中有Vcard XEP。但我不知道如何使用它。请任何人帮助我。 提前致谢。
【问题讨论】:
标签: android xmpp smack vcf-vcard
您必须仅将信息作为文件发送。您可以做的是在文档中发送一个特殊的密钥,如果您发现该密钥会触发使用文档中的数据添加联系人的意图。如果您需要代码方面的帮助,请告诉我。
【讨论】:
要获得联系最需要在 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);
}
}
}
【讨论】: