Android日历:如何为日历插入编写同步适配器

Android日历:如何为日历插入编写同步适配器,android,google-calendar-api,android-calendar,Android,Google Calendar Api,Android Calendar,我想重新打开以下未回复的帖子: 我想使用Android日历提供程序API创建一个日历 并在其中插入事件。创建的日历不能是本地副本。 它必须与谷歌(在线)日历同步。文件上说 为此,我必须使用同步适配器。但是如何编写这样的同步适配器呢 到目前为止,我已经找到了以下两个帖子,但没有解决方案 我想使用Android日历API来实现这一点,而不是谷歌API,这样 用户可以脱机工作。在这方面,谷歌似乎把日历合同搞砸了。文件中没有完全清楚地说明这一点: …插入新日历应作为同步适配器完成 在我看来

我想重新打开以下未回复的帖子:

我想使用Android日历提供程序API创建一个日历 并在其中插入事件。创建的日历不能是本地副本。 它必须与谷歌(在线)日历同步。文件上说 为此,我必须使用同步适配器。但是如何编写这样的同步适配器呢

到目前为止,我已经找到了以下两个帖子,但没有解决方案

我想使用Android日历API来实现这一点,而不是谷歌API,这样
用户可以脱机工作。

在这方面,谷歌似乎把日历合同搞砸了。文件中没有完全清楚地说明这一点:

…插入新日历应作为同步适配器完成

在我看来,这句话的措辞似乎很难奏效。但实际上,使用CalendarContract的应用程序无法创建同步日历(判断您链接的其他SO问题)

您真的不想经历创建自己的SyncAdapter的所有麻烦。我曾经为我的一个应用程序做过一次,因为我想要一个可靠的解决方案,在冰激凌三明治之前的设备上同步日历访问(那里还没有日历合同)

这是一个很大的工作。它涉及到与Google Calendar web服务API的接口(同时尊重它们的访问限制),保留数据的本地副本并同步差异。最终,您自己的SyncAdapter还将复制现有Google日历SyncAdapter的数据

作为一种解决方法,您可以直接在服务器上实现必要的“创建日历”功能。 它要求您的应用程序通过android.permission向用户请求授权。请使用\u凭据

可用于获取访问Google日历API的正确授权令牌。方法
getAuthToken
需要一个auth token类型参数。日历读/写访问的正确方法是以下字符串文字:
“管理您的日历”

不过,该解决方案存在两大问题:

  • 您无法确定日历同步后端是否使用Google calendar。不幸的是,这是一个黑匣子

  • 您无法确定日历同步适配器何时会赶上这些更改。我想有可能以某种方式强制重新同步。但即便如此,你的应用程序也会被暂停。您不能仅仅根据新日历进行操作并立即使用它。您的应用程序必须等待同步发生


  • 你可以为此签一份合同。让你的应用等待并在后台线程中查找更改,直到新日历出现。然后你就有了它的本地id,继续前进。

    现在还不可能使用Clanedar API以编程方式创建与Google(Gmail)帐户同步的日历。SyncAdapter可用于创建新的非Gmail帐户,并在那里创建新日历,但不能与Google日历同步


    这里有更多细节:

    距离这个答案已经快一年了,有更新吗?@Clocker我刚看了Dragan的链接SO问题,有人提到可以创建本地日历。我想这将是最具可移植性的解决方法(从某种意义上说,它不依赖于特定的日历web服务后端),因为tiguchi在使用
    日历提供者
    和陈旧数据时遇到问题。有没有办法解决这些问题?