На самом деле, у вас есть два варианта здесь.
Вы можете проверить учетные записи, синхронизированные с устройством, а затем проверить, являются ли эти учетные записи также учетными записями Google, которые синхронизируют свои соответствующие календари с устройством.
Ниже приведен список всех учетных записей, зарегистрированных на устройстве (обычно это учетные записи Google). Если вам нужны все учетные записи независимо от того, являются ли они Google или нет, используйте взамен AccountManager.getAccounts ().
Account[] theAccounts = AccountManager.getAccountsByType("com.google");
Вы должны сначала получить свой AccountManager через getSystemService(Context.ACCOUNT_SERVICE)
.
Чтобы получить доступ к календарям, синхронизированным на устройстве, считайте «синхронизированными» как активные, вы можете использовать API GData (который я никогда не смог правильно настроить) или получить доступ к локальной базе данных sqllite, в которой хранятся календарь (ы) прямо на устройстве.
Не публикуя тонны кода о том, как получить доступ к этой базе данных, если вы выполните поиск по запросу «Доступ к базе данных календаря Android», вы должны найти много полезной информации о доступе к этой базе данных.
Хорошая отправная точка:
Получение событий из календаря
У меня это работает над приложением, которое я пишу - проверка локальных / синхронизированных учетных записей, затем извлечение этих данных из внутренней базы данных и извлечение календарей только для локальных учетных записей по сравнению со всеми календарями на устройстве. Мне с работы дается много календарей, поэтому я хочу, чтобы календари были «локальными» для устройства моего приложения.