Android Calendar Provider: существует ли уникальный идентификатор событий, который можно использовать на нескольких устройствах?

Я использую Android Calendar Provider для отображения событий. Я также связываю события с изображениями из локальной базы данных приложений, используя EVENT_ID события в качестве ссылки.

Теперь мне интересно, можно ли хранить одну и ту же ссылку на нескольких устройствах?

Я понимаю, что для account_type = 'com.google, GoogleCalendarSyncAdapter использует CalendarContract.EventsColumns.SYNC_DATA1 для хранения googleID этого события. Однако кажется, что это не является надежным способом доступа к данным, поскольку использование столбцов SYNC_DATA может измениться в любое время и может быть изменено только с помощью SyncAdapter.

Есть ли другой способ, которым я могу хранить ссылку на событие поставщика календаря на разных устройствах?

Ответ 1

Вставить идентификаторы изображений в свои события

Некоторое время назад у меня была аналогичная проблема с CalendarContract, и я решил ее, вставив уникальный тег UID в текст описания события. Клиенты будут анализировать этот тег и получать общий UID. Этот идентификатор создается на одном из клиентов, используя класс UUID Java. Однако в моем случае я больше интересовался идентификацией событий, созданных с моим приложением.

В вашем случае я предполагаю, что ссылки на ваши базы данных изображений являются стабильными идентификаторами, которые являются согласованными во всех установках приложений. Вы можете вставить тег в текст описания события, который ссылается на изображение из вашей БД, например:

<myapp:imgid_1234>

В качестве альтернативы вы также можете добавить к вашему событию специальный тип ресурса attendee, который добавит ссылку на изображение к событию: [email protected]. Этот параметр будет содержать описание события в чистоте и может уменьшить случайное удаление пользователя.