Android的Google日历:如何编写日历INSERT同步适配器(Android Calenda

2019-09-01 20:46发布

我基本上要重新开启以下解答后:

  • 插入带有SyncAdapter-日历API的Android新日历

我想利用Android的Google日历提供的API来创建日历和事件插入到它。 所创建的日历不能为本地副本。 它必须与谷歌(在线)日历同步。 在文档中为了做到这一点,我必须使用同步适配器说。 但我怎么写这样的同步适配器?

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

  • 创建了Android API的新同步日历
  • 我如何添加一个新的手机日历到Android?

我想利用这个Android的日历API,而不是谷歌的API,使用户可以脱机工作。

Answer 1:

它看起来像谷歌在这方面搞砸CalendarContract。 该文档是不是就完全清楚:

...插入新的日历作为一个同步适配器来完成。

像有渺茫它可能工作,这是措辞的方式,在我看来。 但讲(判断你链接的其他SO问题)使用CalendarContract不能创建同步日历应用程序。

你真的不想去通过创建自己的SyncAdapter的所有麻烦。 我做到了一次我的应用程序之一,因为我想要一个可靠的解决方案具有预Ice Cream Sandwich的设备同步日历访问(其中CalendarContract不存在,还)。

这是一个很大的工作。 它涉及到与谷歌日历Web服务API接口(同时尊重他们的访问限制),保持数据的本地副本,只是同步的差异。 最终自己SyncAdapter也将重复已有的谷歌日历SyncAdapter的数据。

你可以做什么作为一种解决方法是只需直接实施的必要的“创建日历”功能, 谷歌日历网上API 。 它要求你的应用程序请求通过授权用户android.permission.USE_CREDENTIALS

的AccountManager可用于获取正确的授权令牌用于访问谷歌日历API。 该方法getAuthToken需要身份验证令牌类型参数。 正确的日历的读/写访问下面的字符串文字: "Manage your calendars"

有与解决方法虽然两个大问题:

  1. 你可以不知道,如果日历同步后端利用谷歌日历。 这是不幸的是一个黑盒子。

  2. 你无法确切知道当日历同步适配器会赶上这些变化。 我想这是可能的强制重新同步莫名其妙。 但即便如此,你的应用程序将被停止。 基于该新的日历,你不能只是操作和使用它的时候了。 您的应用程序必须等到同步发生。

你可以查询CalendarContract了点。 让您的应用程序等待和寻找在后台线程修改,直到新的日历显示出来。 然后你有它的本地ID,继续前进。



Answer 2:

这是不可能的创建与谷歌(Gmail的)可同步日历帐户以编程方式使用Clanedar API现在。 SyncAdapter可以用来创建有新的非Gmail帐户,并创建新的日历,但这些都无法同步与谷歌日历。

更多详细的活动: https://stackoverflow.com/a/19734278/237232



文章来源: Android Calendar: how to write sync adapter for calendar INSERT