如何使用cardme将vcard 3.0转换为2.1

时间:2011-10-05 11:25:05

标签: java vcard

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

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

在做研究时我发现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中添加照片。

欢迎任何帮助或建议

由于

1 个答案:

答案 0 :(得分:1)

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

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

由于旧版本的cardme使用不同的软件包名称,因此您可以使用0.1.4版本的库重新构建vcard,这是您程序的另一部分。