public async void Run(IBackgroundTaskInstance taskInstance) { Debug.WriteLine("task running"); BackgroundTaskDeferral _deferral = taskInstance.GetDeferral(); // Not using this... var details = (EmailStoreNotificationTriggerDetails)(taskInstance.TriggerDetails); try { UserDataAccountStore store = await UserDataAccountManager.RequestStoreAsync(UserDataAccountStoreAccessType.AllAccountsReadOnly); var accts = await store.FindAccountsAsync(); foreach (var acct in accts) { foreach (EmailMailbox mailbox in await acct.FindEmailMailboxesAsync()) { if (mailbox.ChangeTracker.IsTracking == false) { mailbox.ChangeTracker.Enable(); } var changeReader = mailbox.ChangeTracker.GetChangeReader(); var batch = await changeReader.ReadBatchAsync(); Debug.WriteLine($"Num Changes in batch = {batch.Count}"); foreach (var change in batch) { Debug.WriteLine($"change type is {change.ChangeType.ToString()}"); foreach (var act in change.MailboxActions) { Debug.WriteLine($"kind = {act.Kind}"); Debug.WriteLine($"number = {act.ChangeNumber}"); } if (change.Message != null) { Debug.WriteLine($"subject: {change.Message.Subject}"); } } changeReader.AcceptChanges(); } } } catch (Exception ex) { Debug.WriteLine($"exception - {ex.Message}"); } Debug.WriteLine("task triggered"); _deferral.Complete(); }
protected async override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); // 获取当前用户下的全部数据账号 UserDataAccountStore store = await UserDataAccountManager.RequestStoreAsync(UserDataAccountStoreAccessType.AllAccountsReadOnly); IReadOnlyList <UserDataAccount> accounts = await store.FindAccountsAsync(); lblMsg.Text += string.Join(",", accounts.Select(p => p.UserDisplayName)); lblMsg.Text += Environment.NewLine; }
private async Task DisplayUserInformationAsync(String id) { // Requires the email, contacts, or appointments in the app's manifest UserDataAccountStore store = await UserDataAccountManager.RequestStoreAsync(UserDataAccountStoreAccessType.AllAccountsReadOnly); // If the store is null, that means all access to Contacts, Calendar and Email data // has been revoked. if (store == null) { rootPage.NotifyUser("Access to Contacts, Calendar and Email has been revoked", NotifyType.ErrorMessage); return; } UserDataAccount account = await store.GetAccountAsync(id); rootPage.NotifyUser("Added account: " + account.UserDisplayName, NotifyType.StatusMessage); }
private async void OnLoad(object sender, RoutedEventArgs e) { var status = await BackgroundExecutionManager.RequestAccessAsync(); Debug.WriteLine($"background execution status = {status}"); // Register background task... var taskRegistered = false; var exampleTaskName = "MyEmailBackgroundTask"; foreach (var task in BackgroundTaskRegistration.AllTasks) { if (task.Value.Name == exampleTaskName) { taskRegistered = true; break; } } if (taskRegistered == false) { var builder = new BackgroundTaskBuilder(); builder.Name = nameof(EmailBackgroundTask); builder.TaskEntryPoint = typeof(EmailBackgroundTask).ToString(); builder.SetTrigger(new EmailStoreNotificationTrigger()); builder.Register().Completed += EmailTriggered; } UserDataAccountStore store = await UserDataAccountManager.RequestStoreAsync(UserDataAccountStoreAccessType.AllAccountsReadOnly); var accts = await store.FindAccountsAsync(); foreach (var acct in accts) { foreach (EmailMailbox mailbox in await acct.FindEmailMailboxesAsync()) { //mailbox.MailboxChanged += Mailbox_MailboxChanged; Debug.WriteLine($"mailbox id {mailbox.DisplayName}"); } } }
private async void buttonAdd_Click(object sender, RoutedEventArgs e) { // 弹出账号添加界面,如果添加成功会返回新建的数据账号的在本地设备上的唯一标识 string userDataAccountId = await UserDataAccountManager.ShowAddAccountAsync(UserDataAccountContentKinds.Email | UserDataAccountContentKinds.Appointment | UserDataAccountContentKinds.Contact); if (string.IsNullOrEmpty(userDataAccountId)) { lblMsg.Text += "用户取消了或添加账号失败"; lblMsg.Text += Environment.NewLine; } else { UserDataAccountStore store = await UserDataAccountManager.RequestStoreAsync(UserDataAccountStoreAccessType.AllAccountsReadOnly); if (store != null) { // 通过数据账号在本地设备上的唯一标识来获取 UserDataAccount 对象 UserDataAccount account = await store.GetAccountAsync(userDataAccountId); lblMsg.Text += "新增的数据账号:" + account.UserDisplayName; } } }
// Fill the specified ComboBox with user data accounts. public async Task LoadDataAccountsAsync(ComboBox comboBox) { // Requires the email, contacts, or appointments capability in the app's manifest. UserDataAccountStore store = await UserDataAccountManager.RequestStoreAsync(UserDataAccountStoreAccessType.AllAccountsReadOnly); if (store != null) { IReadOnlyList <UserDataAccount> userDataAccounts = await store.FindAccountsAsync(); comboBox.DataContext = new ObservableCollection <UserDataAccount>(userDataAccounts); if (userDataAccounts.Count > 0) { comboBox.SelectedIndex = 0; } } else { // If the store is null, that means all access to Contacts, Calendar and Email data // has been revoked. NotifyUser("Access to Contacts, Calendar and Email has been revoked", NotifyType.ErrorMessage); } }