Trong ứng dụng của tôi, người dùng sẽ chọn một tệp âm thanh mà ứng dụng sẽ xử lý. Vấn đề là để ứng dụng thực hiện những gì tôi muốn nó làm với các tệp âm thanh, tôi cần URI ở định dạng tệp. Khi tôi sử dụng trình phát nhạc gốc của Android để duyệt tệp âm thanh trong ứng dụng, URI là một URI nội dung, trông giống như sau:
content://media/external/audio/media/710
Tuy nhiên, bằng cách sử dụng ứng dụng quản lý tập tin phổ biến Astro, tôi nhận được như sau:
file:///sdcard/media/audio/ringtones/GetupGetOut.mp3
Cái sau dễ truy cập hơn đối với tôi để làm việc, nhưng tất nhiên tôi muốn ứng dụng có chức năng với tệp âm thanh mà người dùng chọn bất kể chương trình họ sử dụng để duyệt bộ sưu tập của họ. Vì vậy, câu hỏi của tôi là, có cách nào để chuyển đổi content://
URI kiểu thành file://
URI không? Nếu không, những gì bạn sẽ đề nghị cho tôi để giải quyết vấn đề này? Đây là đoạn mã gọi trình chọn, để tham khảo:
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);
Tôi làm như sau với URI nội dung:
m_ringerPath = m_ringtoneUri.getPath();
File file = new File(m_ringerPath);
Sau đó thực hiện một số nội dung FileInputStream với tệp đã nói.