我正在使用Android日历提供程序来显示事件。 我还通过使用事件的EVENT_ID作为参考,将事件与本地应用数据库中的图像相关联。
我现在想知道是否可以在多个设备上保留相同的引用?
我了解对于account_type ='com.google',GoogleCalendarSyncAdapter使用CalendarContract.EventsColumns.SYNC_DATA1存储事件的googleID。 但是,这似乎不是访问数据的可靠方法,因为SYNC_DATA列的使用可能随时发生变化,并且只能由SyncAdapter修改。
还有其他方法可以跨设备保持对日历提供程序事件的引用吗?
答案 0 :(得分:1)
将图片ID嵌入您的活动
前一段时间我遇到类似CalendarContract的问题,我通过在事件描述文本中嵌入一个唯一的UID标记来解决它。客户端将解析该标记并检索公共UID。该ID是使用UUID Java类在其中一个客户端上生成的。但是,在我的情况下,我更感兴趣的是识别使用我的应用程序创建的事件。
在您的情况下,我假设您的图像数据库引用是在所有应用程序安装中保持一致的稳定ID。您可以在引用数据库中图像的事件描述文本中插入标记,例如:
<myapp:imgid_1234>
或者,您也可以在事件中添加一个特殊的“资源类型”attendee,将该图片引用添加到事件中:imgid_1234@yourappname.com
。此选项可使事件描述保持清洁,并可通过用户减少意外删除。