我们有具有移动客户端和服务器应用程序的应用程序。移动客户端安装在仅支持vCard 2.1进行发送和接收的Symbian OS s60中。
 在服务器端应用程序中,我使用的是cardme 0.2.5。会从手机接收vCard 2.1版,并将其正确存储为2.1版数据库。

当我在服务器应用程序中编辑任何联系人时,新的vCard被保存在版本3.0中,并且服务器与移动设备同步时,问题出现了,因为移动设备仅支持2.1,因此移动设备无法正确解析vCard 3.0

在进行研究时,我发现VCardWriter无法在vCard 2.1版中写回

       public void setOutputVersion(VCardVersion outputVersion) throws VCardException {
               if(outputVersion == null) {
                 this.outputVersion = VCardVersion.V3_0;
               }
             else {
                if(outputVersion == VCardVersion.V2_1 || outputVersion ==          VCardVersion.V4_0) {
                  throw new VCardException("Version "+outputVersion+" not supported.");

         this.outputVersion = outputVersion;
      }
     }


无论如何,我们可以将对象写回到vCard 2.1版

我尝试使用其他jar版本,但发现从cardme 2.0开始,它仅在vcard 3.0中写入。较早的版本不支持在vCard中添加照片。

任何帮助或建议都将受到欢迎

谢谢

最佳答案

如果移动设备仅在解析照片标签时遇到问题,则可以将cardme的兼容模式设置为MS_OUTLOOK。这将导致cardme以v2.1格式写入PHOTO,LOGO,SOUND和KEY。

如果上述方法对您不起作用,则可以下载支持VCard v2.1的cardme版本0.1.4(包括PHOTO),您可以在此处下载cardme 0.1.4

由于cardme的旧版本使用其他软件包名称,因此您可以使用程序的另一部分0.1.4版本的library重建vcard。

关于java - 如何使用cardme将vcard 3.0转换为2.1,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7660531/

10-10 23:51