【问题标题】:How to hide my app's calendar from built-in calendar app?如何从内置日历应用程序中隐藏我的应用程序日历?
【发布时间】:2016-11-20 09:15:05
【问题描述】:

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

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 的屏幕截图,显示了公共设置器(这使得它可以编译、运行并且看起来合法调用):

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

【问题讨论】:

  • 您好 Heinrich,感谢您报告此问题,您确实不应该设置 IsHidden。我已将此上报给 Microsoft,他们已在内部提交了 BR,该 BR 链接到此 UV 项目 wpdev.uservoice.com/forums/110705-universal-windows-platform/…
  • @Lance 没问题,非常感谢。虽然 API 出卖了我,但我很伤心。
  • 能否确认您使用的是 106586 SDK 还是 14393 Preview SDK?似乎有一个可供您使用的选项,一旦我得到团队的确认,我将分享。
  • @Lance 我的通用 Windows SDK 在 Visual Studio 中的标识是:UAP,Version=10.0.10586.0
  • 我没有听到有关 IsHidden 问题的任何更新,但他们确实有我的 repo 应用程序并且正在查看它。我会尽快通知你。

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


【解决方案1】:

老实说,我很惊讶这甚至可以编译。

According to the MSDN documentationAppointmentCalandar

IsHidden - 只读 - 获取 AppointmentCalendar 是否隐藏在 设备的内置日历 UI

这是read only property and can't be set

至于您的实际问题,在仔细查看文档后,这似乎是 API 的疏忽。我会在 MSDN 论坛上提出这个问题。

【讨论】:

  • 你是对的!文档声称它是只读的。不过,它可以编译 - 我添加了 Visual Studio 的屏幕截图。但是这种行为表明文档在这一点上是正确的。接得好。我应该尝试获得官方对此的意见。
【解决方案2】:

这是 10586 中的一个错误,但如果您使用 14393 SDK,如果您的应用有权访问日历而没有 InvalidAccessException,则可以使用 IsHidden

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

【讨论】:

  • 感谢您的确认,很高兴在这里见到你们。在 API 快速开发的时代,这些问题将成为 Stack Overflow 等平台的挑战。我对 Uservoice 问题进行了投票,并希望有一天能隐藏我的日历;)
  • 很高兴在这里见到你们。我想知道他们怎么这么快就发现了 ;-)
  • @Clint 将 Win 10 更新到周年纪念版并将 SDK 切换到 10.0.14393.0 后问题仍然存在,同样的异常。 DeleteAsync() 也给了我一个 InvalidAccessException 。这里有什么问题?
  • 你的最小值和目标都是 14393?
猜你喜欢
  • 1970-01-01
  • 2016-03-15
  • 1970-01-01
  • 2011-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 2014-04-25
相关资源
最近更新 更多