我正在尝试为 Windows RT 设备开发应用程序。我目前面临的问题是基于下一个用例场景:
- 用户定义一个名为“Song”的结构,该结构具有各种字段(标题、艺术家等),包括使用
FileOpenPicker
该类选择的音频文件。
我想将此结构保存在包含提供的信息(标题、艺术家、FullPathToAudio等)的 JSON 文件中,然后再加载该结构。打开现有歌曲后,我想访问音频文件并提供播放按钮。
问题是当我尝试通过StorageFile.GetFileFromPathAsync(currentSong.FullPathToAudio)
应用程序访问文件时关闭。我从文件的Capabilities选项卡中检查了Removable Storage框,并为音频文件 (MP3) 添加了 FileTypeAssociation。Package.appxmanifest
Package.AppxManifest 文件更改如下:
<Applications>
<Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="JamAid.App">
<m2:VisualElements DisplayName="JamAid" Square150x150Logo="Assets\Logo.png" Square30x30Logo="Assets\SmallLogo.png" Description="JamAid" ForegroundText="light" BackgroundColor="#464646">
<m2:SplashScreen Image="Assets\SplashScreen.png" />
</m2:VisualElements>
<Extensions>
<Extension Category="windows.fileTypeAssociation">
<FileTypeAssociation Name="mpfiles">
<DisplayName>Mp3 Files</DisplayName>
<EditFlags OpenIsSafe="true" />
<SupportedFileTypes>
<FileType ContentType="audio/mp3">.mp3</FileType>
</SupportedFileTypes>
</FileTypeAssociation>
</Extension>
</Extensions>
</Application>
</Applications>
<Capabilities>
<Capability Name="internetClient" />
<Capability Name="removableStorage" />
</Capabilities>
因为用户可能会创建包含大量歌曲的播放列表,所以无法将文件复制到应用程序目录或其他可访问位置...
编辑:我试图在本地机器上调试应用程序。现在,它不仅会关闭,还会出现以下错误:
mscorlib.dll 中出现“System.UnauthorizedAccessException”类型的异常,但未在用户代码中处理
WinRT 信息:无法访问指定的文件或文件夹(讠㣯ü)。该项目不在应用程序有权访问的位置(包括应用程序数据文件夹、可通过功能访问的文件夹以及 StorageApplicationPermissions 列表中的持久项目)。验证该文件未标记系统或隐藏文件属性。
附加信息:访问被拒绝。
如果有这个异常的处理程序,程序可以安全地继续。