MediaStore contentResolver ничего не возвращает при поиске в EXTERNAL_CONTENT_URIAndroid

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

Сообщение 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 по-прежнему не дает результатов.
Edit2:
Разрешения запрашиваются во время выполнения, и когда я захожу в настройки на виртуальном диске, он говорит, что разрешение предоставлено. Используемый код:
val requestPermissionLauncher =
registerForActivityResult(ActivityResultContracts.RequestPermission())
{ isGranted: Boolean ->
if (!isGranted) {
// Permission not granted, show snackbar that says that app is unusable
// and/or close app
// NotifyNoPermissionSnackbar()
}
}
// Check android version to support both older as newer android versions
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
// Ask permission if not granted, else do nothing
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_MEDIA_AUDIO) != PackageManager.PERMISSION_GRANTED) {
// If permission not already granted, ask for permission
requestPermissionLauncher.launch(Manifest.permission.READ_MEDIA_AUDIO)
}
}
else {
// Ask permission READ_EXTERNAL_STORAGE instead, for older android versions
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
// Ask permission if not granted, else do nothing
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
// If permission not already granted, ask for permission
requestPermissionLauncher.launch(Manifest.permission.READ_EXTERNAL_STORAGE)
}
}
}```

Edit3: title


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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • «Нет записи для Content: // Media/External/Images/Media/0» при использовании MediaStore.Images и ContentResolver для пол
    Гость » » в форуме Android
    0 Ответы
    35 Просмотры
    Последнее сообщение Гость
  • «Нет записи для Content: // Media/External/Images/Media/0» при использовании MediaStore.Images и ContentResolver для пол
    Anonymous » » в форуме Android
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • «нет записи для содержимого://media/external/images/media/0» при использовании MediaStore.Images и contentResolver для п
    Anonymous » » в форуме Android
    0 Ответы
    41 Просмотры
    Последнее сообщение Anonymous
  • MediaStore contentResolver не возвращает файлы
    Anonymous » » в форуме Android
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • MediaStore contentResolver не возвращает файлы
    Anonymous » » в форуме Android
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous

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