MediaStore contentResolver не возвращает файлыAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 MediaStore contentResolver не возвращает файлы

Сообщение Anonymous »

Я работаю над приложением и пытаюсь добавить в него функции поиска (и воспроизведения) аудиофайлов. Прямо сейчас у меня возникла проблема: ContentResolver MediaStore ничего не возвращает после запроса.

Код: Выделить всё

fun search(query: String): MutableList {

val outputTracks = mutableListOf()

val projection = arrayOf(
MediaStore.Audio.Media._ID,            // ID of the audio file
MediaStore.Audio.Media.DISPLAY_NAME,   // Name of the audio file
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.DURATION,
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
MediaStore.Audio.Media.RELATIVE_PATH
} else {
MediaStore.Audio.Media.DATA
}
)

val selection = "(${MediaStore.Audio.Media.DISPLAY_NAME} LIKE ? OR ${MediaStore.Audio.Media.TITLE} LIKE ?)"
val selectionArgs = arrayOf("%${query}", "%${query}")

try {
context.contentResolver.query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
projection,
selection,
selectionArgs,
null
)?.use { cursor ->
Log.i("FILETEST", "yaya2")
if (cursor.count == 0) {
Log.i("FILETEST", "empty")
} else {
Log.i("FILETEST", "not empty")
}
while (cursor.moveToNext()) {
Log.i(
"FILETEST",
cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME))
)

outputTracks.add(cursorToTrackClass(cursor))

}
}
} catch (e: IllegalArgumentException) {
Log.e("FILETEST", "Query failed: ", e)
}

return outputTracks
Я добавил их в свой AndroidManifest: Я тестировал как на виртуальном компьютере, так и на реальном телефоне; безуспешно.
На виртуальном диске я использовал Проводник устройств, чтобы добавить .mp3 в папку «Загрузки» в качестве папки «Музыка».
Я создаю «SearchManager» в своем onCreate(), используя: sm = SearchManager(applicationContext).
Использование API 35 для моего AVD. Проблема не в запросе; это также не работает при передаче значения null для обоих вариантов выбора в качестве selectArgs. Я синхронизировал файлы после их загрузки. Как вы можете догадаться, Logcat никогда не печатал «не пусто».
Изменить: использование INTERNAL_CONTENT_URI вместо этого дает мне результаты Deneb.ogg, Girtab.ogg и OrganDub.ogg (примеры звуков помещены в мой проект с помощью Android Studio, я полагаю). Но по-прежнему нет результата с использованием EXTERNAL_CONTENT_URI

Подробнее здесь: https://stackoverflow.com/questions/790 ... -any-files
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»