Похоже, вы можете заменить DISPLAY_NAME
на DATA
, и все должно работать нормально.Имейте в виду, однако, что это абсолютный путь, и, вероятно, будет иметь значительную длину.
Поскольку вы используете setListAdapter()
Я собираюсь предположить, что вы используете активность списка.В этом случае добавьте метод onListItemClick()
в ваш класс, чтобы выполнить действие при получении щелчка.Метод должен дать вам id
, чтобы вы знали, какой элемент был нажат.
Примерно так будет работать
protected void onListItemClick (ListView l, View v, int position, long id) {
String[] projection = new String[] {Audio.Media._ID, Audio.Media.DATA};
Cursor c = managedQuery(ContentUris.withAppendedId(Audio.Media.EXTERNAL_CONTENT_URI, id),
projection,
null,
null,
null);
c.moveToFirst();
String p = c.getString(c.getColumnIndex(Audio.Media.DATA));
//your code to load this path into your media player
//and play it goes here
}
Путь песни будет сохранен в p, и вы можете делать с ним все, что захотите.