私のアプリでは、ユーザーがオーディオ ファイルを選択し、アプリがそれを処理します。問題は、アプリがオーディオ ファイルに対して希望どおりに動作するために、URI がファイル形式になっている必要があることです。Android のネイティブ ミュージック プレーヤーを使用してアプリ内でオーディオ ファイルを参照する場合、URI はコンテンツ URI であり、次のようになります。
content://media/external/audio/media/710
ただし、人気のファイル マネージャー アプリケーション Astro を使用すると、次のようになります。
file:///sdcard/media/audio/ringtones/GetupGetOut.mp3
後者の方が私にとってははるかに使いやすいのですが、もちろん、コレクションの参照に使用するプログラムに関係なく、ユーザーが選択したオーディオ ファイルでアプリが機能するようにしたいのです。そこで質問なのですが、content://
スタイル URI をfile://
URI に変換する方法はあるのでしょうか。そうでない場合、この問題を解決するためにどのような方法をお勧めしますか。参考までに、セレクターを呼び出すコードを以下に示します。
Intent ringIntent = new Intent();
ringIntent.setType("audio/mp3");
ringIntent.setAction(Intent.ACTION_GET_CONTENT);
ringIntent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(Intent.createChooser(ringIntent, "Select Ringtone"), SELECT_RINGTONE);
コンテンツ URI に対して次の操作を実行します。
m_ringerPath = m_ringtoneUri.getPath();
File file = new File(m_ringerPath);
次に、そのファイルに対して FileInputStream の処理をいくつか実行します。
ベストアンサー1
URI からgetContentResolver().openInputStream(uri)
を取得するために使用します。InputStream