我的应用需要内部日历。我可以创建一个这样的新日历:
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上测试了这个 - 同样的错误。)
编辑/添加:由于Anthony发现IsHidden
属性在MSDN中被记录为只读,因此Visual Studio中的屏幕截图显示了公共setter(使其编译,运行)看似合法的电话):
(该应用针对的是Win 10 Build 10586 - 也许它是新的,但尚未完成?)
答案 0 :(得分:4)
老实说,我甚至对此感到惊讶。
AppointmentCalandar
的According to the MSDN documentation
IsHidden - 只读 - 获取AppointmentCalendar是否隐藏在 设备的内置日历UI
这是read only property and can't be set。
至于您的实际问题,在仔细阅读文档后,似乎这是对API的疏忽。我会在MSDN论坛上提出这个问题。
答案 1 :(得分:1)
这是10586中的一个错误,但如果您使用的是14393 SDK,则可以使用IsHidden,如果您的应用拥有日历的权限而没有InvalidAccessException