ユーザーがSDカードから音楽ファイルを選択できるアプリがあります。私が使用しているチューザーインテントを起動するには
Intent intent = new Intent();
intent.setType("audio/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(
Intent.createChooser(intent, "Complete action using"), 0);
しかし、ユーザーが選択した方法に応じて、異なる絶対パスを取得しています。ユーザーがESファイルエクスプローラーを使用している場合は取得します/sdcard/Music/song.mp3
が、ユーザーが音楽アプリを使用している場合は取得し/storage/sdcard0/Music/song.mp3
ます。その非常に紛らわしいと私のアプリは私が1つの最終的なベースパスを知っている必要があります。
Environment.getExternalStorageDirectory()
を返します/storage/sdcard0/
。どんな助けでもいただければ幸いです。
注:どちらの場合も
Uri uri = Uri.parse(new File(soundPath).getAbsolutePath());
mPlayer = MediaPlayer.create(this, uri);
正常に動作します。