Benim uygulamamda kullanıcı, uygulamanın işleyeceği bir ses dosyası seçecek. Sorun şu ki, uygulamanın ses dosyalarıyla yapmasını istediğim şeyi yapması için URI'nin dosya biçiminde olmasına ihtiyacım var. Uygulamadaki ses dosyasına göz atmak için Android'in yerel müzik oynatıcısını kullandığımda, URI şuna benzeyen bir içerik URI'sıdır:
content://media/external/audio/media/710
Ancak, popüler dosya yöneticisi uygulaması Astro'yu kullanarak aşağıdakileri elde ediyorum:
file:///sdcard/media/audio/ringtones/GetupGetOut.mp3
İkincisi, benim için çok daha erişilebilir, ancak elbette uygulamanın, koleksiyonlarına göz atmak için kullandıkları programdan bağımsız olarak kullanıcının seçtiği ses dosyasıyla işlevselliğe sahip olmasını istiyorum. Öyleyse sorum şu, content://
stil URI'yi bir file://
URI'ye dönüştürmenin bir yolu var mı? Aksi takdirde, bu sorunu çözmem için bana ne önerirsiniz? Referans için seçiciyi çağıran kod:
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);
İçerik URI'si ile aşağıdakileri yapıyorum:
m_ringerPath = m_ringtoneUri.getPath();
File file = new File(m_ringerPath);
Ardından, söz konusu dosya ile bazı FileInputStream şeyler yapın.