Hen*_*ian 2 c# win-universal-app uwp
我正在尝试使用C#编写的Windows Universal App中的默认音乐库文件夹路径.但是,KnownFolders.MusicLibrary.Path返回空字符串时(await KnownFolders.MusicLibrary.GetFoldersAsync())似乎返回空列表.我已在Package.appxmanifest以下位置指定了此功能:
<Package ...>
...
<Capabilities>
<uap:Capability Name="musicLibrary" />
</Capabilities>
</Package>
Run Code Online (Sandbox Code Playgroud)
我怎么做错了?我希望这行代码会返回类似的东西C:\Users\username\Music.
在KnownFolders.MusicLibrary属性的备注中,我们可以找到它
图书馆允许用户在一个位置查看相关内容.库是一个虚拟文件夹.库中的文件夹保留在其原始位置.了解有关Windows库中库的更多信息.
StorageFolder.Path属性可以获取文件系统中当前文件夹的完整路径,但前提是路径可用.由于音乐库是虚拟文件夹,因此文件系统路径不可用.所以它总是返回空字符串.
音乐库通常具有以下路径.
%USERPROFILE%\Music
Run Code Online (Sandbox Code Playgroud)
这是音乐库中包含的已知文件夹的路径.
库是文件夹的虚拟集合,默认情况下包括已知文件夹以及用户使用您的应用程序或其中一个内置应用程序添加到库中的任何其他文件夹.例如,图片库默认包含图片已知文件夹.用户可以使用您的应用程序或内置照片应用程序向图库中添加文件夹或从中删除文件夹.
要获得此路径,我们可以使用StorageLibrary类.此类允许我们从音乐或视频等库中添加和删除文件夹,并让我们获取库中包含的文件夹列表.
已知文件夹是库中的文件夹,默认情况下会保存新文件.我们可以使用StorageLibrary.SaveFolder属性来获取此文件夹,而不是获取其路径,如下所示:
var musicLibrary = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Music);
Debug.WriteLine(musicLibrary.SaveFolder.Path);
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅音乐,图片和视频库中的文件和文件夹.