Android Добавление нового календаря

Я все время проверял способы создания нового календаря в приложении для Android. Единственный способ, который я видел, - это использование нового API-интерфейса «Календарь» в последней версии API, НО это работает, только если вы используетеCalendarContract.ACCOUNT_TYPE_LOCAL, Он не позволит вам создать календарь, привязанный к учетной записи пользователя Google, синхронизированный сGoogle Calendar, Он не отображается в списке календаря в Интернете по адресуКалендарь Google.

values.put(CalendarContract.Calendars.ACCOUNT_TYPE, 
    CalendarContract.ACCOUNT_TYPE_LOCAL);

Я пытался использовать тип учетной записи из учетной записи, но это не работает. Это, похоже, не вызывает каких-либо ошибок. Результат возвращается нормально.

values.put(CalendarContract.Calendars.ACCOUNT_TYPE, accountType);

Вот полный код для добавления нового локального календаря, используяCalendar API а такжеSYNCADAPTER (тип учетной записи закомментирован). Кто-нибудь знает, возможно ли то, что я пытаюсь сделать?

AccountManager manager = AccountManager.get(context);
Account[] accounts = manager.getAccountsByType("com.google");

String accountName = "";
String accountType = "";

for (Account account : accounts) {
    accountName = account.name;
    accountType = account.type;
    break;
}

ContentResolver cr = context.getContentResolver();
ContentValues values = new ContentValues();

values.put(CalendarContract.Calendars.ACCOUNT_NAME, accountName);
//values.put(CalendarContract.Calendars.ACCOUNT_TYPE, accountType);
values.put(CalendarContract.Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL);
values.put(CalendarContract.Calendars.NAME, DaysSince.CAL_NAME);
values.put(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, DaysSince.CAL_NAME);
values.put(CalendarContract.Calendars.SYNC_EVENTS, 1);
values.put(CalendarContract.Calendars.VISIBLE, 1);
values.put(CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL, CalendarContract.Calendars.CAL_ACCESS_OWNER);
values.put(CalendarContract.Calendars.OWNER_ACCOUNT, accountName);
values.put(CalendarContract.Calendars.DIRTY, 1);
values.put(CalendarContract.Calendars.CALENDAR_TIME_ZONE, TimeZone.getDefault().getID());

Uri calUri = CalendarContract.Calendars.CONTENT_URI;

calUri = calUri.buildUpon()
        .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
        .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, accountName)
        .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, accountType)
        .build();

Uri result = cr.insert(calUri, values);

Ответы на вопрос(1)

Ваш ответ на вопрос