1

Windows Phone 8.1 用の音楽アプリケーションを開発しています。BackgroundTask を使用し、電話の音楽ライブラリにアクセスします。アプリケーションは、仮想 SD カードを備えたエミュレーターでは正常に動作しますが、デバイスでは動作しません。デバイスで再生しようとすると、エラーが発生します。

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

エラーが発生したこの問題コード。Simplycity のフォアグラウンド アプリに配置されたコード:

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

この問題を解決する方法を知っている人はいますか?

4

1 に答える 1

5

バックグラウンド タスクから SetUriSource を使用しても、アプリにパッケージ化されていないファイルを指定すると機能しません。ユーザーのライブラリまたは SD カードからファイルを再生する場合は、代わりに SetFileSource または SetStreamSource を使用する必要があります。StorageFile.GetFileFromPathAsync(path) を呼び出して、パスからファイルを取得できます。

残念ながら、これは文書化されていないため、多くの人がこれに遭遇する可能性があります (特に、サンプルで SetUriSource が使用されているため)。さらに悪いことに、VS からデプロイする場合、SetUriSource の使用シミュレーターや電話でも機能するという事実です。しかし、ストアに送信すると機能しなくなります。そのため、人々は自分のアプリが機能しないことに非常に遅く気付くでしょう...

于 2015-03-20T14:04:40.097 に答える