1

Windows Phone 8.1 용 음악 응용 프로그램을 개발합니다. BackgroundTask를 사용하고 전화 음악 라이브러리에 액세스합니다. 응용 프로그램 가상 에뮬레이터에서 잘 작동합니다 - SD 카드,하지만 장치에서 작동하지 않습니다. 기기에서 재생을 시도하면 오류가 발생합니다.WP8.1의 장치에서 전화 음악 라이브러리의 노래를 재생하지 마십시오.

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

오류가 발생한이 문제 코드입니다. 심플을 위해 포 그라운드 앱에 삽입 된 코드 :

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

누구든지이 문제를 해결하는 방법을 알고 있습니까?

+0

더 많은 정보를 제공해야합니다. 이 오류는 정확히 언제 발생합니까 (코드 줄)? 그리고 어떤 프로세스에서 오류가 발생합니까 (포 그라운드 또는 백그라운드 작업)? –

+0

질문이 업데이트되었습니다. 이 오류는 백그라운드에서 발생하며 전경은 동일합니다. 백그라운드 작업에는 많은 코드 줄이 포함되어 있으므로 전경 원인에 대한 예제를 제공했습니다. –

+0

또한 에뮬레이터 코드는 훌륭하게 작동합니다. –

답변

5

백그라운드 작업에서 SetUriSource를 사용하면 응용 프로그램과 함께 패키지되지 않은 파일을 가리킬 때 작동하지 않습니다. 사용자 라이브러리 또는 SD 카드의 파일을 재생하려면 SetFileSource 또는 SetStreamSource를 대신 사용해야합니다. StorageFile.GetFileFromPathAsync (path)를 호출하여 경로에서 파일을 가져올 수 있습니다.

불행히도 이것은 문서화되어 있지 않으므로 아마도 많은 사람들이이 문제에 부딪 힐 수 있습니다 (특히 샘플에서 SetUriSource를 사용하기 때문에). 더 악화되는 이유는 SetUriSource 을 사용하면 시뮬레이터와 VS에서 배포 할 때도이 작동한다는 것입니다. 그러나 상점에 제출할 때 작동을 멈 춥니 다. 그래서 사람들은 앱이 작동하지 않는다는 사실을 매우 늦게 발견 할 것입니다 ...

+1

와우! 정말 고맙습니다! +1 – mkabatek

+0

이 답변을 위해 stackoverlfow를 살펴보아야한다는 것은 끔찍한 일이지만, 그럼에도 불구하고 게시 해 주셔서 감사합니다. – outbred