Android: получить аудио URI от TITLE
Я попал в сложную ситуацию. Сначала я получаю URI мультимедиа аудиофайла, полученного с помощью намерения выбора аудио. Но мне нужно отобразить аудио заголовок для пользователя. Поэтому я извлекаю его заголовок из приведенного ниже кода и помещаю его в список строк массива для отображения в виде списка, поскольку я разрешаю пользователю выбирать несколько файлов:
static ArrayList<String> list = new ArrayList<String>();
public String getTitlePathFromURI(Context context, Uri contentUri) {
Cursor cursor = null;
try {
String[] proj = { MediaStore.Audio.Media.TITLE };
cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE);
cursor.moveToFirst();
return cursor.getString(column_index);
} finally {
if (cursor != null) {
cursor.close();
}
}
}
Но моя основная потребность - установить этот аудиофайл в качестве мелодии звонка из другого сервиса. Поэтому мне нужно передать медиа URI на сервис, а не название. Есть ли способ получить аудио URI из его названия? Или есть какой-либо способ связать другое строковое значение с элементом в списке массива, но не отобразить его в виде списка?
В настоящее время я использую DSLV(представление списка DragSort) в качестве списка со следующим кодом:
listView = (DragSortListView) findViewById(R.id.listview);
adapter = new ArrayAdapter<String>(this,
R.layout.item_layout, R.id.textView1, list);
listView.setAdapter(adapter);
listView.setDropListener(onDrop);
listView.setRemoveListener(onRemove);
DragSortController controller = new DragSortController(listView);
controller.setDragHandleId(R.id.drag_handle);
//controller.setClickRemoveId(R.id.);
controller.setRemoveEnabled(true);
controller.setSortEnabled(true);
controller.setDragInitMode(1);
//controller.setRemoveMode(removeMode);
listView.setFloatViewManager(controller);
listView.setOnTouchListener(controller);
listView.setDragEnabled(true);
Спасибо