Как выдать права доступа для 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 шт):
В UWP ограничены права на многое. Проще написать WPF приложение под .Net 5.
Создаем приложение такого типа

Делаем двойной клик по названию проекта, открывается НазваниеПроекта.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}";
}
}
Все работает, и не требуется никаких прав.