我们有具有移动客户端和服务器应用程序的应用程序。移动客户端安装在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中添加照片。
欢迎任何帮助或建议
由于
答案 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,这是您程序的另一部分。