保存 asmack Vcard 头像

Posted

技术标签:

【中文标题】保存 asmack Vcard 头像【英文标题】:Saving asmack Vcard Avatars 【发布时间】:2014-05-29 11:05:48 【问题描述】:

我正在使用 asmack buddycloud 库开发一个聊天应用程序,我目前遇到的问题是我可以使用此代码从用户的 vcard 接收图像:

for (RosterEntry rosterEntry : roster.getEntries()) 
    String  senderusername = rosterEntry.getUser();
    String  senderrealname = rosterEntry.getName();
    //   String  sendermessage =  ?????
    VCard vcard = new VCard();
    try 
        vcard.load(connection, ""+senderusername+"");
     catch (XMPPException e) 
        // TODO Auto-generated catch block
        e.printStackTrace();
     // load someone's VCard
    byte[] senderimage = vcard.getAvatar();

但我无法将其保存到磁盘(外部),并且谷歌搜索并没有真正帮助。

请大家帮忙看看好吗?谢谢

【问题讨论】:

aSmack 的 buddycloud 版本已有 4 年历史。我建议您尝试最新版本的 aSmack。 好吧,我发现它比休息小伙子问题少 【参考方案1】:
try 
  vcard.load(connection,  ""+senderusername+"@"+SERVICE_NAME);
  byte[] senderimage = vcard.getAvatar();
 catch (Exception e) 
                  e.printStackTrace();

您似乎没有正确加载 VCard。 用 sendername+"@"+SERVICE_NAME 替换 sendername,如上所示。

得到用户的图片字节数组后,可以很方便的转换成String,然后Base64,最后以图片的形式保存在内部存储中。对我来说,同样的方法效果很好。 希望这行得通。

【讨论】:

以上是关于保存 asmack Vcard 头像的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 asmack 设置头像?

使用 smack 库的 android 头像管理

使用 asmack 未从 vCard 获得准确响应

手机一存上别人的号码,就出头像,怎么设置的?

工具 - gravatar保存头像

头像上传