如何从内置日历应用隐藏我的应用日历?

时间:2016-07-17 19:45:09

标签: windows-10 uwp windows-10-universal windows-10-mobile uwp-xaml

我的应用需要内部日历。我可以创建一个这样的新日历:

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(使其编译,运行)看似合法的电话):

IsHidden property has setter

(该应用针对的是Win 10 Build 10586 - 也许它是新的,但尚未完成?)

2 个答案:

答案 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

https://wpdev.uservoice.com/forums/110705-universal-windows-platform/suggestions/15278775-appointmentcalendar-ishidden-setter-throws-a-inval