C# UWP:如何从本地音乐文件中读取歌词?

C# UWP:如何从本地音乐文件中读取歌词?,c#,windows,uwp,C#,Windows,Uwp,歌词嵌套在音乐文件中,而不是从internet下载。MusicProperties没有此类属性 我尝试使用Id3包来读取它,这需要文件的路径。但是,在UWP中,似乎无法使用路径访问文件,如C:/Users/Seaky/Desktop/Music/SomeMusic.mp3(至少不适用于我,因为即使使用broadFileSystemAccess,我的权限也被拒绝) 我还可以尝试什么?从选定编号文件夹之外的UWP应用程序访问文件需要额外的权限 正如您所指出的,您已将broadFileSystemAc

歌词嵌套在音乐文件中,而不是从internet下载。
MusicProperties
没有此类属性

我尝试使用
Id3
包来读取它,这需要文件的路径。但是,在UWP中,似乎无法使用路径访问文件,如
C:/Users/Seaky/Desktop/Music/SomeMusic.mp3
(至少不适用于我,因为即使使用
broadFileSystemAccess
,我的权限也被拒绝)


我还可以尝试什么?

从选定编号文件夹之外的UWP应用程序访问文件需要额外的权限

正如您所指出的,您已将
broadFileSystemAccess
功能添加到应用程序清单中,该功能应允许访问最终用户有权访问的任何文件

broadFileSystemAccess
功能仍然需要最终用户授权应用程序。如果指定了
broadFileSystemAccess
功能并且尚未授予权限,则通常会提示最终用户执行此操作,但在某些情况下,这是错误的。因此,您可以通过Windows“应用程序和设置”设置页面下应用程序的“高级设置”链接检查应用程序是否具有所需权限

如果您正在对路径进行硬编码,您可以尝试让最终用户使用
FileOpenPicker
来选择文件,看看这是否有区别


还有关于文件访问权限的更多信息。

我找到了一种方法,因为
Mp3
在其构造函数中接受流对象。因此,我能够做到:

    public async Task<string> GetLyrics()
    {
        var file = await StorageFile.GetFileFromPathAsync(Path);
        using (var stream = await file.OpenAsync(FileAccessMode.Read))
        {
            using (var mp3 = new Mp3(stream.AsStream()))
            {
                var lyrics = mp3.GetTag(Id3TagFamily.Version2X).Lyrics;
                return lyrics.Count > 0 ? lyrics[0].Lyrics : "";
            }
        }
    }
public异步任务getlyms()
{
var file=await-StorageFile.getfilefrompathsync(路径);
使用(var stream=await file.OpenAsync(FileAccessMode.Read))
{
使用(var mp3=new mp3(stream.AsStream()))
{
var-lyris=mp3.GetTag(Id3TagFamily.Version2X);
返回歌词。计数>0?歌词[0]。歌词:“”;
}
}
}

应用程序的文件系统切换按钮已打开,但我的权限仍然被拒绝。我没有对路径进行硬编码。我允许用户在播放任何音乐文件时查看歌词。您能将出现错误的代码和收到的完整错误发布到哪里吗?我的代码位于
getlyris
注释区域。异常是
系统。UnauthorizedAccessException:“对路径'C:\Users\Seaky\Desktop\Media\Music\Justin Bieber\Baby.mp3'的访问被拒绝。”