Как выдать права доступа для UWP, чтобы использовать Global System Media Transport Controls Session Manager

Соответственно вопрос звучит также, как и заголовок.

При попытке использовать GlobalSystemMediaTransportControlsSessionManager выдается исключение:

System.UnauthorizedAccessException
HResult=0x80070005
Сообщение = Отказано в доступе.

Код C#, WMS.xalm.cs:

 public sealed partial class MainPage : Page
{
    public MainPage()
    {

        this.InitializeComponent();
        ApplicationView.PreferredLaunchViewSize = new Size { Height = 615, Width = 645 };
        ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
        PrintCurrentlyPlaying();
    }
    public static void PrintCurrentlyPlaying()
    {
        TextBlock textBlock_Name = new TextBlock();
        textBlock_Name.TextTrimming = TextTrimming.WordEllipsis;
        var sessionManager = GlobalSystemMediaTransportControlsSessionManager.RequestAsync().GetAwaiter().GetResult();
        var currentSession = sessionManager.GetCurrentSession();
        var mediaProperties = currentSession.TryGetMediaPropertiesAsync().GetAwaiter().GetResult();
        textBlock_Name.Text = $"Plaing {mediaProperties.Title} by {mediaProperties.Artist}";

    }

Не могу продвинуться дальше в разработке, из-за нехватки прав.

P.S. Этим запросом я хочу получить из Media Control название и автора композиции. Сразу отвечаю на возможный комментарий - это возможно сделать, не хватает только прав. Спасибо.


Ответы (1 шт):

Автор решения: Bulson

В UWP ограничены права на многое. Проще написать WPF приложение под .Net 5.

Создаем приложение такого типа WPF .net

Делаем двойной клик по названию проекта, открывается НазваниеПроекта.csproj и правим файл: заменяем строку

<TargetFramework>netcoreapp3.1</TargetFramework>

на строку

<TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>

сохраняем, ждем немного пока подгрузяться пакеты.

Размещаем в окне приложения кнопку и текстблок, и пишем такой код

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private async void Button_Click(object sender, RoutedEventArgs e)
    {
        var sessionManager = await GlobalSystemMediaTransportControlsSessionManager.RequestAsync();
        var currentSession = sessionManager.GetCurrentSession();
        var mediaProperties = await currentSession.TryGetMediaPropertiesAsync();

        Output.Text = $"Plaing {mediaProperties.Title} by {mediaProperties.Artist}";
    }
}

Все работает, и не требуется никаких прав.

→ Ссылка