Отфильтруйте управляемый запрос по расширению файла (или по типу файла) для курсора Android - PullRequest
3 голосов
/ 28 октября 2011

Я хочу создать управляемый запрос с использованием Android SDK, в котором возвращаемые результаты фильтруются по соответствующему файлу расширение (например, не обязательно по имени).Я провел немало исследований и устал и надеюсь, что сообщество может мне помочь ... Я уверен, что ответ есть, но вместо чтения книги по SQL или чего-то еще, я просто пытаюсь что-то сделатьэто должно быть довольно просто, но не найти решения.

То, что я хочу сделать, это, по сути, что-то вроде:

managedQuery(Audio.Media.EXTERNAL_CONTENT_URI, myProjection, Audio.Media.DATA + " like ? ", new String[] {"%mp3%"}, null );

Это работает, КРОМЕ этого, если заголовок что-то вроде "mymp3.wav ", этот запрос по-прежнему будет возвращать его, так как в имени присутствует« mp3 », но это не то, что я хочу -> я хочу, чтобы он фильтровался исключительно по расширению файла (или, альтернативно, по типу файла, если естьспособ сделать это [например, если имя расширения файла mp3 было изменено на .wav, даже если содержимое файла на самом деле mp3, это также подойдет для моих целей]).В решении следует указать способ фильтрации для нескольких расширений / типов файлов (например, если я хочу, чтобы запрос возвращал все файлы .mp3, а также файлы .wav, но не файлы .amr, например).

Более тогопока у меня есть ты, я хочу отсортировать результаты по алфавиту.Я пробовал что-то вроде:

managedQuery(Audio.Media.EXTERNAL_CONTENT_URI, myProjection, null, null, MediaStore.Audio.Media.TITLE + " ASC" );

Однако, это не фильтрует все результаты ... то есть возвращаемый список сортируется, скажем, по mp3title, а затем, в конце, он добавляет в список файлы .wav, также отсортированные по алфавиту, но я хочу, чтобы весь список был в алфавитном порядке независимо от типа файла.

Я знаю, что кто-то здесь может ответить на этот вопрос легко-> заранее спасибо !!!

1 Ответ

8 голосов
/ 28 октября 2011

Я думаю, все, что вам нужно сделать, это изменить %mp3% на %mp3.Это заставит "mp3" быть в конце имени файла.

Если вам нужно выбрать несколько типов файлов, сделайте это так:

managedQuery(
  Audio.Media.EXTERNAL_CONTENT_URI,
  myProjection, 
  Audio.Media.DATA + " like ? OR " + Audio.Media.DATA + " like ? ", 
  new String[] {"%mp3","%wav"}, 
  MediaStore.Audio.Media.TITLE + " ASC" );
...