如何从内置日历应用程序中隐藏我的应用程序日历?
How to hide my app's calendar from built-in calendar app?
我的应用程序需要一个内部日历。我可以像这样创建一个新日历:
var store = await AppointmentManager.RequestStoreAsync(AppointmentStoreAccessType.AppCalendarsReadWrite);
var cacheCalendar = await store.CreateAppointmentCalendarAsync("unique name here");
这成功了,我得到了一个新日历。但是这个日历在 phone 的内置日历应用程序中是可见的。 我不希望此日历可见,因为它用于内部簿记。
所以我试着像这样隐藏日历:
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
时出现以下异常:
Access is denied. (Exception from HRESULT: 0x80070005
(E_ACCESSDENIED))"
为什么我不能从内置的 phone 日历应用程序中隐藏我的日历?这是一个未记录的限制吗?还有其他方法吗?
(注意:我在 Windows 10 Mobile 和桌面 Win 10 上测试了这个 - 同样的错误。)
Edit/Addition:由于 Anthony 发现 IsHidden
属性 在 MSDN 中被记录为只读,这里是来自 Visual Studio 显示 public setter (这使得它编译,运行 并且看起来合法调用):
(该应用程序针对 Win 10 Build 10586 - 也许是新的,但未完成?)
老实说,我很惊讶这竟然能编译。
According to the MSDN documentation 对于 AppointmentCalandar
IsHidden - Read-only - Gets whether the AppointmentCalendar is hidden in
the device's built-in calendar UI
这是一个read only property and can't be set。
至于您的实际问题,在仔细查看文档后发现这是 API 中的一个疏忽。我会在 MSDN 论坛上提出这个问题。
这是 10586 中的错误,但如果您使用的是 14393 SDK,并且您的应用有权访问日历且没有 InvalidAccessException,则可以使用 IsHidden
我的应用程序需要一个内部日历。我可以像这样创建一个新日历:
var store = await AppointmentManager.RequestStoreAsync(AppointmentStoreAccessType.AppCalendarsReadWrite);
var cacheCalendar = await store.CreateAppointmentCalendarAsync("unique name here");
这成功了,我得到了一个新日历。但是这个日历在 phone 的内置日历应用程序中是可见的。 我不希望此日历可见,因为它用于内部簿记。
所以我试着像这样隐藏日历:
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
时出现以下异常:
Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))"
为什么我不能从内置的 phone 日历应用程序中隐藏我的日历?这是一个未记录的限制吗?还有其他方法吗?
(注意:我在 Windows 10 Mobile 和桌面 Win 10 上测试了这个 - 同样的错误。)
Edit/Addition:由于 Anthony 发现 IsHidden
属性 在 MSDN 中被记录为只读,这里是来自 Visual Studio 显示 public setter (这使得它编译,运行 并且看起来合法调用):
(该应用程序针对 Win 10 Build 10586 - 也许是新的,但未完成?)
老实说,我很惊讶这竟然能编译。
According to the MSDN documentation 对于 AppointmentCalandar
IsHidden - Read-only - Gets whether the AppointmentCalendar is hidden in the device's built-in calendar UI
这是一个read only property and can't be set。
至于您的实际问题,在仔细查看文档后发现这是 API 中的一个疏忽。我会在 MSDN 论坛上提出这个问题。
这是 10586 中的错误,但如果您使用的是 14393 SDK,并且您的应用有权访问日历且没有 InvalidAccessException,则可以使用 IsHidden