2017-02-25 3 views
0

본질적으로 약속 목록을 검색 한 다음 보고서를 생성하는 UWP 프로그램이 있습니다.C# UWP AppointmentStore.FindAppointmentsAsync가 PC에서 작동하지 않습니다.

내가 How to retrieve appointments in UWP from a Windows 10 calendar using C#

나는 발생한 문제에 따라, AppointmentManager.RequestStoreAsync 및 AppointmentStore.FindAppointmentsAsync을 사용하고는 윈도우 10 PC에서 Windows 10 모바일 장치에서 잘 작동하지만 것입니다. 둘 다 동일한 캘린더에 동기화됩니다.

내 코드 : 나는 여전히 PC에 잘 작동 이전의 WPF 코드가

AppointmentStore appointmentStore = await AppointmentManager.RequestStoreAsync(AppointmentStoreAccessType.AllCalendarsReadOnly); 

      DayOfWeek weekStart = DayOfWeek.Monday; 
      DateTimeOffset startingDate = DateTimeOffset.Now; 

      while (startingDate.DayOfWeek != weekStart) 
       startingDate = startingDate.AddDays(-1); 

      DateTimeOffset currentPayStart = startingDate.AddDays(-14); 

      var date = currentPayStart; 
      var timeZoneOffset = TimeZoneInfo.Local.GetUtcOffset(DateTime.Now); 
      var startTime = new DateTimeOffset(date.Year, date.Month, date.Day, 0, 0, 0, timeZoneOffset); 

      TimeSpan duration = TimeSpan.FromDays(7); 

      FindAppointmentsOptions options = new FindAppointmentsOptions(); 
      options.MaxCount = 100; 
      options.FetchProperties.Add(AppointmentProperties.Subject); 
      options.FetchProperties.Add(AppointmentProperties.Location); 
      options.FetchProperties.Add(AppointmentProperties.AllDay); 
      options.FetchProperties.Add(AppointmentProperties.StartTime); 
      options.FetchProperties.Add(AppointmentProperties.Duration); 
      options.FetchProperties.Add(AppointmentProperties.Details); 
      options.FetchProperties.Add(AppointmentProperties.DetailsKind); 

      IReadOnlyList<Appointment> appointments = await appointmentStore.FindAppointmentsAsync(startTime, duration, options); 

. (하지만이 모바일에 구현되지 않았습니다)

코드는 :

var outlookApp = new Outlook.Application(); 
      var calFolder = outlookApp.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar) as Outlook.Folder; 

      DayOfWeek weekStart = DayOfWeek.Monday; 
      DateTime startingDate = DateTime.Today; 

      while (startingDate.DayOfWeek != weekStart) 
       startingDate = startingDate.AddDays(-1); 

      DateTime previousWeekStart = startingDate.AddDays(-7); 
      DateTime previousWeekEnd = startingDate.AddDays(0); 

      Outlook.Items rangeAppts = GetAppointmentsInRange(calFolder, previousWeekStart, previousWeekEnd); 

기존 Outlook.Items (WPF 코드) 반면, PC에 배포 할 때 IReadOnlyList은 항상 비어있는 것으로 보인다 잘 작동 .

위와 같이 코드는 모바일에서 정상적으로 작동하므로 본질적으로 UWP로 업그레이드하려고했지만 필자는 데스크톱이 아닙니다.

내가 아주 기본적인 뭔가를 누락 느낄

...

+0

PC에서 캘린더 앱을 사용하고 계십니까? –

+0

PC는 Outlook을 사용하며 모바일은 표준 캘린더 앱을 사용합니다. 두 계정 모두 동일한 Outlook 계정으로 동기화됩니다. 내 UWP 응용 프로그램은 모두에서 작동합니다. PC에서만 IReadOnlyList 목록에 약속을 읽지 않습니다. 나는 var ct = new MessageDialog (appointments.Count.ToString()); ct.ShowAsync();를 기다린다. – Geo

+0

AppointmentStore는 교환과 통신하는 API가 아니지만 시스템의 데이터와 연결됩니다. 나는 Outlook App이 캘린더 앱처럼 시스템에서 교환기의 데이터를 저장하는 데이 api를 사용한다고 생각하지 않습니다. 그래서 두 가지 해결책 : 캘린더 응용 프로그램을 구성하여 PC에 데이터를 가져 오거나 교환 API를 사용하여 데이터를 가져 오십시오. –

답변

0

AppointmentStore하지만 시스템의 데이터 교환과 통신 API를 밤은. 나는 Outlook App이 캘린더 앱처럼 시스템에서 교환기의 데이터를 저장하는 데이 api를 사용한다고 생각하지 않습니다. 따라서 두 가지 해결책 : 캘린더 앱을 구성하여 PC에서 데이터를 가져 오거나 교환 API를 사용하여 데이터를 가져 오십시오.

+0

확실히 도움이 될 것입니다. _how_에 설명하여 캘린더 앱을 구성하여 데이터를 가져 오는 경우. 제안은 아무도 없이는 쓸모가 없다. –

관련 문제