2016-04-23 4 views
0

解決策を検索した後、生のフォルダに保存されたmp3のパスを取得する方法を、私はパスを取得することが可能である。このlinkから発見しました: android.resource://[package]/[resource_id]アンドロイドのよう

例:Uri.parse("android.resource://com.my.package/" + R.raw.mp3filename);

私がしたい正確に何です。問題は、私はlolipopを使用していて、うまくいきません。パッケージ/リソースが解析されると、Uri.parseのパスはnullになります。 SongクラスではresourceId(R.raw.mp3filename)にしかアクセスできないため、これを書く方法は他にありますか?

+0

"それは動作しないようです" - "それ"は何ですか? "パスにnullを返す" - *何が 'null'を返すか? 'Uri.parse()'? – CommonsWare

+0

@CommonsWare上記の例を解析しようとすると、パスにnullが返されます – Kapparino

+0

"パスとしてnull"とはどういう意味ですか? 'Uri'はパスではありません。' http://stackoverflow.com/questions/36816944/android-how-to-get-path-of-mp3-stored-in-raw-folder?noredirect=1 #comment61206631_36816944'はパスです。あなたは 'Uri.parse()'自体が 'null'を返すと言っていますか?あるいは、 'Uri'で何かをしようとしていますか?(例えば、getPath()を呼び出して)、*が* nullを返していますか? – CommonsWare

答えて

1

それは、デバイス上のファイルではありませんので、ノーR.raw.mp3file

を使用して、ファイルのパスを取得することが可能です。これは、開発マシンのハードドライブ上のファイルです。デバイス上では、単にAPKファイルのエントリにすぎません。

次のいずれかの

  • は、ファイルのパスを必要としない他の方法でやろうとしている何でも、または

  • Resourcesオブジェクトの使用openInputStream()(あなたがいずれかからの1を得ることができますgetResources()経由Context)、そのように、ローカルファイルにそのリソースの内容をコピーするには、Java I/Oを使用する上internal storage

+0

ありがとうございました。私はtommorowで詳しく説明します。 :) – Kapparino

関連する問題