我为Windows Phone 8.1开发音乐应用程序。我使用BackgroundTask并访问手机音乐库。应用程序在具有虚拟SD卡的模拟器上正常工作,但在设备上不起作用。在设备上尝试播放时,会发生错误:
Failed with error code System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
此问题代码,发生错误。代码放置在前景app中,用于简单性:
BackgroundMediaPlayer.Current.SetUriSource(new Uri("C:\\Data\\Users\\Public\\Music\\Ballroom\\Juan Camus - Now That The Love's Gone.mp3"));
BackgroundMediaPlayer.Current.Play();
有谁知道如何解决这个问题?
答案 0 :(得分:5)
当指向未与应用程序打包在一起的文件时,使用后台任务中的SetUriSource不起作用。如果要播放用户库或SD卡中的文件,则需要使用SetFileSource或SetStreamSource。您可以通过调用StorageFile.GetFileFromPathAsync(path)从路径获取文件。
不幸的是,这没有记录,所以很多人可能会遇到这种情况(特别是因为该示例使用了SetUriSource)。更糟糕的是,当从VS部署时,使用SetUriSource 在模拟器中工作,甚至在手机上工作。但它在提交到商店时停止工作。所以人们会很晚才知道他们的应用程序不起作用......