0

을 반환 나던 :액세스 음악 파일 UWP -KnownFolders.MusicLibrary.GetItemsAsync는() 이봐 난 다음 한 것도

var fileList = await KnownFolders.MusicLibrary.GetItemsAsync(); 

그것은 모든 파일을 반환하지 않습니다와 나는 음악 폴더에 파일이 있습니다. 또한이 :

<Capabilities> 
<Capability Name="internetClient" /> 
<Capability Name="removableStorage" /> 
<Capability Name="documentsLibrary" /> 
<Capability Name="MusicLibrary" /> 
<Capability Name="HomeGroup" /> 
<Capability Name="RemovableDevices" /> 

나는 모든 파일/예외를 반환 나던 왜 몰라? 어떤 제안? FolderPicker를 사용하여 폴더의 모든 파일을 가져 오려고했으나 같은 결과가 나타납니다.

+1

음악 라이브러리에 액세스 할 수 있지만 음악 라이브러리의 파일이 숨겨져있을 수 있습니다. 라이브러리에서 파일을 만든 다음'GetItemsAsync()'를 다시 실행하여 생성 된 파일이 있는지 확인할 수 있습니까? – Laith

답변

3

게시 한 코드를 작성하십시오. 잘못된 기능을 사용하고있는 것으로 보입니다. 아래와 같이 매니페스트 앱의 패키지를 선언 할 때

musicLibrary 기능

UAP 네임 스페이스를 포함해야합니다.

<Capabilities><uap:Capability Name="musicLibrary"/></Capabilities> 

더 많은 정보 App capability declarations를 참조하십시오.

<Capabilities> 
    <Capability Name="internetClient" /> 
    <uap:Capability Name="removableStorage" /> 
    <uap:Capability Name="musicLibrary" /> 
    <uap:Capability Name="documentsLibrary" /> 
</Capabilities> 

을 그리고 당신은 음악 라이브러리에있는 파일과 하위 폴더를 얻을 수 있어야합니다 :

그래서 당신은 다음과 같은 당신의 Package.appxmanifest을 chane 수 있습니다.

var fileList = await KnownFolders.MusicLibrary.GetItemsAsync(); 
if (fileList.Count > 0) 
{ 
    foreach (var item in fileList) 
    { 
     Debug.WriteLine(item.Name); 
    } 
} 

음악 라이브러리의 경로는 일반적으로 다음과 같습니다.

%USERPROFILE%\Music 

이 경로 아래에 파일이 있는지 확인할 수 있습니다. 또한 다음 코드를 사용하여 경로를 확인할 수 있습니다.

var musicLibrary = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Music); 
Debug.WriteLine(musicLibrary.SaveFolder.Path); 

이렇게하면 새 파일이 기본적으로 저장되는 라이브러리의 폴더 인 알려진 폴더의 경로가 출력됩니다. 자세한 내용은 this answer을 참조하십시오.

+0

고마워요, 구성 요소에 uap을 추가했습니다 (u를 저장하고 모든 기능을 수행 한 후에 빌드해야합니다. 그렇지 않으면 다시 작성하면 자동으로 편집 한 내용이 다시 표시됩니다). 그리고 시도 했으니까요. 정말 흥미 롭습니다. fileList에는 아무 것도 없습니다. 마우스 오버하고 디버깅하는 동안 그것을 검사하지만 루프에 파일이 있다는 것을 보여 줍니까? 이 마법은 무엇입니까? –

+1

@ChrisTanev 이것은'fileList'가 관리 객체가 아니기 때문에, 그리고 기본적으로 UWP 프로젝트의 ** Debugger type **은 "** Managed Only **"입니다. 따라서 디버깅하는 동안 검사 할 수 없습니다. 검사를 위해 [이 스크린 샷] (https://i.stack.imgur.com/XzbZ1.png)과 같이 ** 디버거 유형 **을 ** ** 혼합 (관리 및 기본) **으로 변경하려고 할 수 있습니다 . –

+0

주오 감사합니다! 내가 지금 가지고있는 문제는 삭제 된 구성 요소가 자동으로 매니페스트에 자동으로 추가되기 때문에 다시 삭제하고 proj를 빌드해야합니다. 이견있는 사람 ? –