En mi aplicación, el usuario debe seleccionar un archivo de audio que la aplicación maneja. El problema es que para que la aplicación haga lo que quiero que haga con los archivos de audio, necesito que el URI esté en formato de archivo. Cuando uso el reproductor de música nativo de Android para buscar el archivo de audio en la aplicación, el URI es un URI de contenido, que se ve así:
content://media/external/audio/media/710
Sin embargo, usando la popular aplicación de administración de archivos Astro, obtengo lo siguiente:
file:///sdcard/media/audio/ringtones/GetupGetOut.mp3
Este último es mucho más accesible para mí para trabajar, pero, por supuesto, quiero que la aplicación tenga funcionalidad con el archivo de audio que el usuario elija, independientemente del programa que use para navegar por su colección. Entonces mi pregunta es, ¿hay alguna forma de convertir el content://
estilo URI en un file://
URI? De lo contrario, ¿qué me recomendarías para resolver este problema? Aquí está el código que llama al selector, como referencia:
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);
Hago lo siguiente con el URI de contenido:
m_ringerPath = m_ringtoneUri.getPath();
File file = new File(m_ringerPath);
Luego haga algunas cosas de FileInputStream con dicho archivo.