2017-01-01 5 views
0

hereContentResolverを使用)のように電話にメディアがありますが、返されるパスは/storage/emulated/0/...の形式です。​​の場合はJava.IO.FileNotFoundExceptionとなります。私はこのパスが実際のパスではないことを理解していますが、このパスから実際のパスを取得するにはどうすればよいですか?MediaPlayer.SetDataSource()を '/ storage/emulated/0/...'に設定します。

プロジェクトフォルダに資産があると、MediaPlayerはうまく動作します。しかし、私はそれを他のファイルと連携させることはできません。私はすでにREAD_EXTERNAL_STORAGEの許可を設定しました。

私はむしろC#で答えを持っていますが、Javaでの回答で十分でしょう。

EDIT

私は似たものを扱ういくつかの答えを見てきましたが、それらはすべて私がUriを持っていると仮定します。上記のメソッドは文字列を返します。私はそれをUriに変換しようとして成功していないので、私はそれらのソリューションをテストすることすらできません。

+0

マニフェストファイルにアクセス権を追加することを忘れないでください。実際のパスではありません " - 確実に'/storage/emulated/0/'に間違いはありません。ファイルが存在するかどうかは別の問題です。 "私はすでにREAD_EXTERNAL_STORAGEの許可を設定しています。" - 私はXamarinがどのように実行時のアクセス権を処理するのか分かりませんが、あなたもそれが必要です。また、使用しているアプローチがすべてのメディア(リムーバブルストレージのメディアなど)では機能しないことにも注意してください。 – CommonsWare

+0

@CommonsWareそれはリムーバブルメディア上にありません。それは私がUSBケーブルとWindowsエクスプローラを使って電話機に置いたファイルです。そして、パスは、質問で述べた方法で 'Data'として返されます。だから何が問題だろうか? – ispiro

+0

私は[ランタイムのアクセス許可](https://developer.android.com/training/permissions/requesting.html)を可能性として挙げました。 – CommonsWare

答えて

0

ログインandroid: Get real path from uri

あなたがこのことから、実際のパスを取得する方法についてのアイデアを得ることができます。

0

代わりにハードコードされた値を渡すのでこれを渡すようにしてください(/ストレージ/は/ 0 /をエミュレート)

String path= Environment.getExternalStorageDirectory()+"/yourFolder/"; 

私はこのパスはおそらくであることを実感」

関連する問題