본질적으로 약속 목록을 검색 한 다음 보고서를 생성하는 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로 업그레이드하려고했지만 필자는 데스크톱이 아닙니다.
내가 아주 기본적인 뭔가를 누락 느낄...
PC에서 캘린더 앱을 사용하고 계십니까? –
PC는 Outlook을 사용하며 모바일은 표준 캘린더 앱을 사용합니다. 두 계정 모두 동일한 Outlook 계정으로 동기화됩니다. 내 UWP 응용 프로그램은 모두에서 작동합니다. PC에서만 IReadOnlyList 목록에 약속을 읽지 않습니다. 나는 var ct = new MessageDialog (appointments.Count.ToString()); ct.ShowAsync();를 기다린다. –
Geo
AppointmentStore는 교환과 통신하는 API가 아니지만 시스템의 데이터와 연결됩니다. 나는 Outlook App이 캘린더 앱처럼 시스템에서 교환기의 데이터를 저장하는 데이 api를 사용한다고 생각하지 않습니다. 그래서 두 가지 해결책 : 캘린더 응용 프로그램을 구성하여 PC에 데이터를 가져 오거나 교환 API를 사용하여 데이터를 가져 오십시오. –