Путь Windows.Storage.KnownFolders.MusicLibrary возвращает пустой

Я пытаюсь получить путь к папке с музыкальной библиотекой по умолчанию в Windows Universal App, написанный на C#. Тем не мение, KnownFolders.MusicLibrary.Path возвращает пустую строку (await KnownFolders.MusicLibrary.GetFoldersAsync()) похоже вернуть пустой список. Я уже указал эту возможность в Package.appxmanifest:

<Package ...>

  ...

  <Capabilities>
    <uap:Capability Name="musicLibrary" />
  </Capabilities>
</Package>

Как я делаю это неправильно? Я ожидаю, что строка кода вернет что-то вроде C:\Users\username\Music,

1 ответ

Решение

В свойстве Remarks of KnownFolders.MusicLibrary мы можем найти

Библиотеки позволяют пользователям просматривать связанный контент в одном месте. Библиотека - это виртуальная папка. Папки в библиотеке остаются на своих местах. Узнайте больше о библиотеках в библиотеках Windows.

Свойство StorageFolder.Path может получить полный путь к текущей папке в файловой системе, но только если путь доступен. Поскольку музыкальная библиотека является виртуальной папкой, путь к файловой системе недоступен. Так что он всегда возвращает пустую строку.

Музыкальная библиотека обычно имеет следующий путь.

%USERPROFILE%\Music

Это путь к известной папке, включенной в музыкальную библиотеку.

Библиотека - это виртуальная коллекция папок, которая по умолчанию включает в себя известную папку и любые другие папки, которые пользователь добавил в библиотеку с помощью вашего приложения или одного из встроенных приложений. Например, библиотека "Изображения" по умолчанию включает в себя известную папку "Изображения". Пользователь может добавлять папки или удалять их из библиотеки "Изображения" с помощью приложения или встроенного приложения "Фото".

Чтобы получить этот путь, мы можем использовать класс StorageLibrary. Этот класс позволяет нам добавлять и удалять папки из библиотеки, например "Музыка" или "Видео", и позволяет получить список папок, включенных в библиотеку.

Известная папка - это папка в библиотеке, в которую по умолчанию сохраняются новые файлы. Мы можем использовать свойство StorageLibrary.SaveFolder, чтобы получить эту папку, а затем получить ее путь следующим образом:

var musicLibrary = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Music);
Debug.WriteLine(musicLibrary.SaveFolder.Path);

Для получения дополнительной информации см. " Файлы и папки" в библиотеках "Музыка", "Изображения" и "Видео".

Другие вопросы по тегам