1. ホーム
  2. android

[解決済み] Androidです。コンテンツURIからファイルURIを取得する?

2022-04-23 20:02:55

質問

私のアプリでは、ユーザーがオーディオファイルを選択し、アプリがそれを処理することになっています。問題は、アプリがオーディオファイルに対して私が望むことを行うために、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のような処理をします。

解決方法は?

ただ getContentResolver().openInputStream(uri) を取得します。 InputStream をURIから取得します。

http://developer.android.com/reference/android/content/ContentResolver.html#openInputStream(android.net.Uri)