как конвертировать vcard 3.0 в 2.1 используя cardme - PullRequest
1 голос
/ 05 октября 2011

У нас есть приложение, которое имеет мобильное клиентское и серверное приложение. Мобильные клиенты устанавливаются в ОС Symbian 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. Старые версии не поддерживают добавление фотографий в визитную карточку.

Любая помощь или предложение будут приветствоваться

Спасибо

1 Ответ

1 голос
/ 10 мая 2012

если мобильное устройство имеет проблемы только с анализом тега photo, вы можете установить для режима совместимости cardme значение MS_OUTLOOK.Это заставит cardme записать PHOTO, LOGO, SOUND и KEY в формате v2.1.

Если вышеперечисленное не работает для вас, вы можете загрузить версию cardme 0.1.4, которая поддерживает VCard v2.1(включая ФОТО) вы можете скачать его здесь cardme 0.1.4

Поскольку старая версия cardme использует другое имя пакета, вы можете пересобрать vcard, используя версию 0.1.4библиотеки является еще одной частью вашей программы.

...