访问音乐文件UWP -KnownFolders.MusicLibrary.GetItemsAsync()不返回任何内容

时间:2017-03-21 19:35:22

标签: uwp win-universal-app windows-10-universal file-access known-folders

嘿,我有以下内容:

 var fileList = await KnownFolders.MusicLibrary.GetItemsAsync();

它没有返回任何文件,我在Music文件夹中有文件。我也有:

<Capabilities>
<Capability Name="internetClient" />
<Capability Name="removableStorage" />
<Capability Name="documentsLibrary" />
<Capability Name="MusicLibrary" />
<Capability Name="HomeGroup" />
<Capability Name="RemovableDevices" />

我不知道为什么它不会返回任何文件/异常?有什么建议 ?我还尝试使用FolderPicker来获取文件夹中的所有文件,但结果相同。

1 个答案:

答案 0 :(得分:3)

形成您发布的代码,似乎您使用了错误的功能。

  

musicLibrary 功能必须包含 uap 命名空间,当您在应用的程序包清单中声明它时,如下所示。

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

有关详细信息,请参阅App capability declarations

所以你可以像以下一样使用Package.appxmanifest

<Capabilities>
  <Capability Name="internetClient" />
  <uap:Capability Name="removableStorage" />
  <uap:Capability Name="musicLibrary" />
  <uap:Capability Name="documentsLibrary" />
</Capabilities>

然后你应该能够获得音乐库中的文件和子文件夹。

var fileList = await KnownFolders.MusicLibrary.GetItemsAsync();
if (fileList.Count > 0)
{
    foreach (var item in fileList)
    {
        Debug.WriteLine(item.Name);
    }
}

音乐库通常有以下路径。

%USERPROFILE%\Music

您可以检查此路径下是否有文件。您还可以使用以下代码检查路径。

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

这将输出已知文件夹的路径,该文件夹是默认情况下保存新文件的库中的文件夹。有关详细信息,请参阅this answer