1

我为 Windows Phone 8.1 开发音乐应用程序。我使用 BackgroundTask 并访问手机音乐库。应用程序可以在带有虚拟 sd 卡的模拟器上正常工作,但不能在设备上工作。尝试在设备上播放时,出现错误:

Failed with error code System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

这个问题代码,出现了哪些错误。为 simplecity 放置在前台应用程序中的代码:

  BackgroundMediaPlayer.Current.SetUriSource(new Uri("C:\\Data\\Users\\Public\\Music\\Ballroom\\Juan Camus - Now That The Love's Gone.mp3"));
        BackgroundMediaPlayer.Current.Play();

有谁知道如何解决这个问题?

4

1 回答 1

5

当指向未与应用程序打包的文件时,从后台任务使用 SetUriSource 不起作用。如果要播放用户库或 SD 卡中的文件,则需要使用 SetFileSource 或 SetStreamSource 代替。您可以通过调用 StorageFile.GetFileFromPathAsync(path) 从路径获取文件。

不幸的是,这没有记录在案,所以很多人可能会遇到这种情况(特别是因为示例使用了 SetUriSource)。更糟糕的是,当从 VS 部署时,使用 SetUriSource确实可以在模拟器甚至手机上工作。但是在提交到商店时它停止工作。所以人们会很晚才发现他们的应用程序不起作用......

于 2015-03-20T14:04:40.097 回答