Nella mia app l'utente deve selezionare un file audio che l'app quindi gestisce. Il problema è che, affinché l'app faccia quello che voglio che faccia con i file audio, ho bisogno che l'URI sia in formato file. Quando utilizzo il lettore musicale nativo di Android per cercare il file audio nell'app, l'URI è un URI contenuto, che assomiglia a questo:
content://media/external/audio/media/710
Tuttavia, usando la popolare applicazione di file manager Astro, ottengo quanto segue:
file:///sdcard/media/audio/ringtones/GetupGetOut.mp3
Quest'ultimo è molto più accessibile per me con cui lavorare, ma ovviamente voglio che l'app abbia funzionalità con il file audio che l'utente sceglie indipendentemente dal programma che usano per sfogliare la loro collezione. Quindi la mia domanda è: c'è un modo per convertire l' content://
URI di stile in un file://
URI? Altrimenti, cosa mi consiglieresti di risolvere questo problema? Ecco il codice che richiama il selettore, come riferimento:
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);
Faccio quanto segue con l'URI del contenuto:
m_ringerPath = m_ringtoneUri.getPath();
File file = new File(m_ringerPath);
Quindi fai alcune cose FileInputStream con detto file.