C# 在Windows Universal应用程序中播放(背景)音频失败
我想在C# 在Windows Universal应用程序中播放(背景)音频失败,c#,wpf,win-universal-app,background-audio,C#,Wpf,Win Universal App,Background Audio,我想在UniversalWindowsApp中播放一些音频文件给那些我只知道路径的人。这是我当前的代码: //exception in this line: var file = await StorageFile.GetFileFromPathAsync(@"C:\Users\myuser\Music\someartist\album\01. Title.mp3"); var stream = await file.OpenAsync(Windows.Storage.FileAccessMo
UniversalWindowsApp
中播放一些音频文件给那些我只知道路径的人。这是我当前的代码:
//exception in this line:
var file = await StorageFile.GetFileFromPathAsync(@"C:\Users\myuser\Music\someartist\album\01. Title.mp3");
var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
mediaControl.SetSource(stream, file.ContentType);
mediaControl.Play();
我还尝试了以下代码片段:
mediaControl.Source = new Uri(@"C:\Users\myuser\Music\someartist\album\01. Title.mp3", UriKind.RelativeOrAbsolute);
但这两种代码都会引发如下异常:
访问被拒绝。(HRESULT异常:0x80070005(E_访问被拒绝))
它实际上并不位于第一行(意味着它会立即跳转到未处理的异常
),因为它会中断到中间行(从App.g.i.cs
/InitializeComponent()
)复制):
如果我使用它工作的示例代码:
async private void SetLocalMedia()
{
var openPicker = new Windows.Storage.Pickers.FileOpenPicker();
openPicker.FileTypeFilter.Add(".mp3");
var file = await openPicker.PickSingleFileAsync();
// mediaControl is a MediaElement defined in XAML
if (null != file)
{
var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
mediaControl.SetSource(stream, file.ContentType);
mediaControl.Play();
}
}
这显然与我的相同,除了FileOpenPicker
——一个我不会出现的对话框,因为我已经有了文件路径
问题是,如何在UniversalWindowsApp
中播放一些音频
提前谢谢 您需要了解Windows应用商店应用程序中的文件访问和权限例外情况明确表示您无权访问该文件。对于
File.Open
或FileStream
您可以使用各种选项打开文件,这些选项可以提供正确的访问权限,但所谓的StorageFile.getfilefrompathsync
没有任何选项。这意味着你不能坚持那种方法。
async private void SetLocalMedia()
{
var openPicker = new Windows.Storage.Pickers.FileOpenPicker();
openPicker.FileTypeFilter.Add(".mp3");
var file = await openPicker.PickSingleFileAsync();
// mediaControl is a MediaElement defined in XAML
if (null != file)
{
var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
mediaControl.SetSource(stream, file.ContentType);
mediaControl.Play();
}
}