Dans mon application, l'utilisateur doit sélectionner un fichier audio que l'application gère ensuite. Le problème est que pour que l'application fasse ce que je veux qu'elle fasse avec les fichiers audio, j'ai besoin que l'URI soit au format de fichier. Lorsque j'utilise le lecteur de musique natif d'Android pour rechercher le fichier audio dans l'application, l'URI est un URI de contenu, qui ressemble à ceci:
content://media/external/audio/media/710
Cependant, en utilisant la populaire application de gestion de fichiers Astro, j'obtiens ce qui suit:
file:///sdcard/media/audio/ringtones/GetupGetOut.mp3
Ce dernier est beaucoup plus accessible pour moi, mais bien sûr, je veux que l'application ait une fonctionnalité avec le fichier audio que l'utilisateur choisit, quel que soit le programme qu'il utilise pour parcourir sa collection. Ma question est donc la suivante: y a-t-il un moyen de convertir l' content://
URI de style en file://
URI? Sinon, que me recommanderiez-vous pour résoudre ce problème? Voici le code qui appelle le sélecteur, pour référence:
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);
Je fais ce qui suit avec l'URI du contenu:
m_ringerPath = m_ringtoneUri.getPath();
File file = new File(m_ringerPath);
Ensuite, faites des trucs FileInputStream avec ledit fichier.