Моему приложению нужен внутренний календарь. Я могу создать новый календарь следующим образом:
var store = await AppointmentManager.RequestStoreAsync(AppointmentStoreAccessType.AppCalendarsReadWrite);
var cacheCalendar = await store.CreateAppointmentCalendarAsync("unique name here");
Это удается, и я получаю новый календарь. Но этот календарь виден во встроенном приложении календаря телефона. Я не хочу, чтобы этот календарь был виден, так как он предназначен для внутренней бухгалтерии.
Поэтому я пытаюсь скрыть календарь следующим образом:
var store = await AppointmentManager.RequestStoreAsync(AppointmentStoreAccessType.AppCalendarsReadWrite);
var cacheCalendar = await store.CreateAppointmentCalendarAsync("unique name here");
cacheCalendar.IsHidden = true; // <---- make calendar hidden
await cacheCalendar.SaveAsync(); // <---- save; error here
При вызове SaveAsync
я получаю следующее исключение:
Доступ запрещен. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))"
Почему я не могу скрыть свой календарь из встроенного в телефон приложения календаря? Это недокументированное ограничение? Есть ли другие способы сделать это?
(Примечание: я тестировал это на Windows 10 Mobile, а также на настольной версии Win 10 — та же ошибка.)
Редактировать/добавлять: поскольку Энтони обнаружил, что свойство IsHidden
задокументировано как доступное только для чтения в MSDN, вот скриншот из Visual Studio, показывающий общедоступный установщик (который делает его компилируемым, запускаемым и, по-видимому, законным для вызова):
(Приложение нацелено на Win 10 Build 10586 — может быть, оно новое, но незаконченное?)
UAP,Version=10.0.10586.0
- person Heinrich Ulbricht   schedule 21.07.2016