1

我们有具有移动客户端和服务器应用程序的应用程序。移动客户端安装在仅支持 vCard 2.1 发送和接收的 Symbian OS s60 中。在服务器端应用程序中,我使用的是 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 中添加照片。

欢迎任何帮助或建议

谢谢

4

1 回答 1

1

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

如果上述方法不适合您,您可以下载支持 VCard v2.1(包括 PHOTO)的 cardme 0.1.4 版本,您可以在这里下载cardme 0.1.4

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

于 2012-05-10T15:36:33.667 回答