Android日历提供程序同步-同步数据列?
我想在内部Android日历和我的应用程序之间进行同步。 我正在使用从Android API 14开始提供的CalendarContract 内容提供商“com.android.calendar”的任何更改都会调用我的同步适配器的PerformSync(..)。 但是,此时,事件的所有行都设置为DIRTY=0。 这意味着,Google日历同步必须先将脏标志设置为零,然后我的同步适配器才能访问它们 CalendarContract.EventsColumns.SYNC_DATA1-SYNCDATA10被称为内容提供程序的列,用于同步适配器。 有人知道这些列的用途有什么约定吗? 我意识到,在我的设备上,SYNC_DATA5存储上次修改的日期,SYNC_DATA1似乎存储谷歌事件ID。因此,每当日历应用程序与谷歌日历同步时,这些列都会被修改 但是,如果我选择将这些列中的一列用于我的同步适配器,如何确保另一个应用程序不使用完全相同的列,并且它们相互覆盖Android日历提供程序同步-同步数据列?,android,calendar,sync,android-contentprovider,Android,Calendar,Sync,Android Contentprovider,我想在内部Android日历和我的应用程序之间进行同步。 我正在使用从Android API 14开始提供的CalendarContract 内容提供商“com.android.calendar”的任何更改都会调用我的同步适配器的PerformSync(..)。 但是,此时,事件的所有行都设置为DIRTY=0。 这意味着,Google日历同步必须先将脏标志设置为零,然后我的同步适配器才能访问它们 CalendarContract.EventsColumns.SYNC_DATA1-SYNCDATA
如果Google Calendar总是使用SYNC_DATA5来存储上次修改的日期,我可以将其用于我的同步逻辑,我只需要确定这是一种约定。SYNC_DATA列可以用于任何值。我不确定谷歌日历是如何做到这一点的,但它们是用于与同步适配器相关的内容的,不同步日历的应用程序不得使用它们。因此,您可以安全地使用任何列(假设您不在应用程序的不同版本之间更改它,或者您必须编写迁移代码),因为您的日历上不应该有任何其他同步适配器 当不是同步适配器时,您不能依赖
SYNC\u DATA
列,当日历不是“您的”时,请勿使用它们
然而,我有一种强烈的感觉,你没有正确同步。要同步日历,您必须使用单独的日历,而不是谷歌或任何其他第三方应用程序同步的任何日历。我还将列出一些我认为您执行的其他步骤,但可能对其他人有所帮助 您还需要为系统设置一个同步适配器,以便访问同步适配器字段。此外,您还应仅从一台计算机同步日历。为此,如果还没有验证器,您还需要提供验证器(以便用户能够在帐户的同步首选项中启用/禁用您的同步适配器)。可以找到有关同步适配器的概述 如果您没有服务器端帐户,并且只有一个日历,则在首次启动时需要执行一些操作:
在此之后,Android将负责不时执行您的同步适配器,您可以访问
sync_DATA
列而不会发生冲突(在您创建的日历中),并且DIRTY
标志被正确使用。我能问一下您提到的同步逻辑是什么吗?如何将SYNC_DATA5用于同步逻辑?