Как я могу получить содержимое уведомления Windows 10? В UWP / C#? - PullRequest
1 голос
/ 30 мая 2020

Я пытаюсь получить текст внутри уведомлений пользователя и действие, которое происходит при нажатии на уведомление. Я получаю разрешение пользователя на их чтение (используя UserNotificationListener.RequestAccessAsync()), а затем перебираю их и добавляю в ListView:

private async void getNotificationsAsync()
{
    UserNotificationListener listener = UserNotificationListener.Current;
    IReadOnlyList<UserNotification> notifs = await listener.GetNotificationsAsync(NotificationKinds.Toast);
    NotificationsList.Items.Clear();
    foreach (UserNotification notif in notifs)
    {
        //Console.WriteLine(notif.AppInfo.DisplayInfo.DisplayName);
        NotificationsList.Items.Add(notif.AppInfo.DisplayInfo.DisplayName);
    }
}

Но все, что я могу получить из класса UserNotification - имя инициирующего приложения (и время появления уведомления). Я не могу найти способ получить доступ к содержимому уведомления в классе UserNotification.

Возможно ли то, что я пытаюсь сделать? Я использую правильный класс?

1 Ответ

0 голосов
/ 30 мая 2020

Нашел! (всегда бывает после Я задаю вопрос ?). Ради потомков вот ответ:

NotificationBinding toastBinding = notif.Notification.Visual.GetBinding(KnownNotificationBindings.ToastGeneric);

if (toastBinding != null)
{
    // And then get the text elements from the toast binding
    IReadOnlyList<AdaptiveNotificationText> textElements = toastBinding.GetTextElements();

    // Treat the first text element as the title text
    string titleText = textElements.FirstOrDefault()?.Text;

    // We'll treat all subsequent text elements as body text,
    // joining them together via newlines.
    string bodyText = string.Join("\n", textElements.Skip(1).Select(t => t.Text));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...