【问题标题】:Get music library files获取音乐库文件
【发布时间】:2016-05-05 16:41:31
【问题描述】:

尝试在 windows phone 应用程序 8.1 上打开多余的音乐文件夹,但出现以下异常:

System.Reflection.TargetInvocationException 未处理 消息:System.Windows.ni.dll 中发生“System.Reflection.TargetInvocationException”类型的未处理异常附加信息:调用目标已引发异常。

代码如下:调用

try
{
    GetFiles();
}
catch (Exception ex)
{
    Debug.WriteLine(ex.Message);
}

private async void GetFiles()
{
    StorageFolder folder = KnownFolders.MusicLibrary;
    IReadOnlyList<StorageFile> listOfFiles;
    if (folder!=null)
    {
        listOfFiles =await folder.GetFilesAsync(); //this line casuing Debugger.break();
    }
}

【问题讨论】:

  • 你是否在包清单文件中添加了能力
  • 试试我发布的代码。希望它有效

标签: c# windows-phone-8.1 known-folders


【解决方案1】:

在 package.appmanifest 文件中添加音乐库功能

然后试试这段代码。它对我有用

    StorageFolder folder = KnownFolders.MusicLibrary;
    if (folder!=null)
    {
       var songs = (await   folder.GetFilesAsync(Windows.Storage.Search.CommonFileQuery.OrderByName)).ToList();
    }

Link to Sample Code

【讨论】:

  • private async void LayoutRoot_Loaded(object sender, RoutedEventArgs e) { try { StorageFolder folder = KnownFolders.MusicLibrary; if (folder != null) { var songs = (await folder.GetFilesAsync(CommonFileQuery.OrderByName)).ToList(); Debug.WriteLine("count=" + songs.Count); } } catch (Exception e1) { Debug.WriteLine("exception while getting files:" + e1.StackTrace); } }
  • 方法或操作未执行异常
  • 在哪一行?你能发布堆栈跟踪吗?我刚试过你的代码,我无法重新生成异常
  • 获取文件时出现堆栈跟踪异常:在 Windows.Storage.KnownFolders.get_MusicLibrary() at PhoneApp1.MainPage.d__17.MoveNext()
  • 对不起,我无法重新生成它。
【解决方案2】:

试试这个。

Windows 8.1 Universal

上完美运行
            FileOpenPicker openPicker = new FileOpenPicker();
            openPicker.ViewMode = PickerViewMode.Thumbnail;
            openPicker.SuggestedStartLocation = PickerLocationId.MusicLibrary;
            openPicker.FileTypeFilter.Add(".mp3");
            openPicker.FileTypeFilter.Add(".wav");
            openPicker.FileTypeFilter.Add(".mp4");

            var file = await openPicker.PickSingleFileAsync();

            try
            {
                var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
                playbackElement3.SetSource(stream, file.ContentType);//Play Selected

                playbackElement3.Play();

            }
            catch (Exception ex)
            {

            }

然后尝试从源中获取列表

【讨论】:

  • 欣赏您的代码,但我不想使用选择器选择文件!我想使用 KnownFolders.MusicLibrary.GetFilesAsync(); 获取文件方法
  • 很遗憾听到这个消息……我的错
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
  • 1970-01-01
  • 2011-06-15
  • 2013-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多