Android:如何检测哪些Google日历与设备同步?

问题描述:

我正在写一个软件,检查用户的日历中的事件,并对它们进行一些操作。但我只想触摸仅显示在同步日历中的事件。 我正在使用Google日历API,但不知道如何只列出同步的日历并忽略其他日历。Android:如何检测哪些Google日历与设备同步?

感谢

有“同步日历”相对于Android的SDK没有概念。某些应用程序可能会同步日历,例如属于Android开放源代码项目一部分的日历应用程序。但是,特定的应用程序可能存在或不存在于任何给定的电话上,并且它没有记录和支持的API。

其实你在这里有两个选择。

您可以检查与设备同步的帐户,然后验证这些帐户是否也是将各自日历同步到设备的Google帐户。

下面将为您提供注册到设备的所有帐户(通常是某种Google帐户)。如果您想要所有帐户,无论他们是否是Google,请改用AccountManager.getAccounts()。

Account[] theAccounts = AccountManager.getAccountsByType("com.google"); 

您必须首先通过getSystemService(Context.ACCOUNT_SERVICE)获取您的AccountManager。

要访问在设备上同步的日历,请将“同步”视为活动,您可以使用GData API(我从未能够正常工作)或访问本地sqllite数据库日历直接在设备上。

如果您搜索“android访问日历数据库”,您应该会发现访问该数据库的许多有用信息,而不会发布大量代码来访问该数据库。

很好的起点: Getting events from calendar

我有这个工作,我写一个应用程序 - 检查本地/同步帐户,然后拉动,走出内部数据库的数据,并抓住了挂历只为本地帐户与设备上的所有日历相比较。我有很多日历与我共享,所以我只希望日历“本地”到我的应用程序的设备。

老问题,但我想我会更新以防万一有人遇到它。从SDK 14开始,您可以在query()中使用SYNC_EVENTS