In meiner App muss der Benutzer eine Audiodatei auswählen, die die App dann verarbeitet. Das Problem ist, dass die URI im Dateiformat vorliegen muss, damit die App mit den Audiodateien das tun kann, was ich möchte. Wenn ich den nativen Musik-Player von Android verwende, um in der App nach der Audiodatei zu suchen, ist der URI ein Inhalts-URI, der folgendermaßen aussieht:
content://media/external/audio/media/710
Mit der beliebten Dateimanager-Anwendung Astro erhalte ich jedoch Folgendes:
file:///sdcard/media/audio/ringtones/GetupGetOut.mp3
Letzteres ist für mich viel zugänglicher, aber ich möchte natürlich, dass die App über Funktionen für die Audiodatei verfügt, die der Benutzer auswählt, unabhängig davon, mit welchem Programm er seine Sammlung durchsucht. Meine Frage ist also, gibt es eine Möglichkeit, den content://
Stil-URI in einen file://
URI zu konvertieren ? Was würden Sie mir sonst empfehlen, um dieses Problem zu lösen? Hier ist der Code, der die Auswahl als Referenz aufruft:
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);
Ich mache Folgendes mit der Inhalts-URI:
m_ringerPath = m_ringtoneUri.getPath();
File file = new File(m_ringerPath);
Dann mache ein paar FileInputStream-Sachen mit dieser Datei.