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);

Спасибо

0 ответов

Другие вопросы по тегам