W mojej aplikacji użytkownik wybiera plik audio, który aplikacja obsługuje. Problem polega na tym, że aby aplikacja robiła to, co chcę, aby robiła z plikami audio, potrzebuję, aby identyfikator URI był w formacie pliku. Kiedy używam natywnego odtwarzacza muzyki Androida do przeglądania pliku audio w aplikacji, URI to identyfikator URI treści, który wygląda następująco:
content://media/external/audio/media/710
Jednak korzystając z popularnej aplikacji do zarządzania plikami Astro, otrzymuję:
file:///sdcard/media/audio/ringtones/GetupGetOut.mp3
Ta ostatnia jest dla mnie znacznie bardziej dostępna do pracy, ale oczywiście chcę, aby aplikacja miała funkcjonalność z plikiem audio, który wybiera użytkownik, niezależnie od programu, którego używa do przeglądania swojej kolekcji. Więc moje pytanie brzmi: czy istnieje sposób na przekonwertowanie content://
stylu URI na file://
URI? W przeciwnym razie, co byś mi polecił, aby rozwiązać ten problem? Oto kod, który wywołuje selektor, w celach informacyjnych:
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);
Wykonuję następujące czynności z identyfikatorem URI treści:
m_ringerPath = m_ringtoneUri.getPath();
File file = new File(m_ringerPath);
Następnie zrób coś FileInputStream z tym plikiem.