Можно ли выполнить необработанный запрос к базе данных Android meta meta sqlite? - PullRequest
7 голосов
/ 01 марта 2012

Я пишу небольшое приложение для воспроизведения музыки.Моя цель - Android API уровня 7 и выше.

Приложение должно отображать и воспроизводить только музыку, которая была помечена с определенным набором жанров, выбранных пользователем через настройки, например, «Pop», «Rock», "Деревенщина".

Сейчас я пытаюсь найти эффективный способ найти все идентификаторы альбомов и названия альбомов, которые содержат дорожки, помеченные выбранными жанрами.

Это очень просто в SQL.Телефон хранит метаданные мультимедиа в базе данных sqlite.Я нашел его во внутренней памяти телефона, скопировал через adb и попробовал некоторые sqlite-запросы к нему.Результирующий запрос представляет собой однострочник SQL с цепочкой объединений, и он отлично работает.

Это кажется более сложным в Java с Android SDK, по крайней мере, с уровнем API 7 и выше.Я могу использовать managedQuery в MediaStore для выполнения некоторого ограниченного синтаксиса SQL в той же базовой базе данных, но если я правильно понимаю, что нет JOIN и нет DISTINCT при использовании этого API.

Также я мог упустить это,но MediaStore позволяет мне искать все треки жанра one , но не все треки нескольких жанров в одном запросе.

Так что все это требует немного ручной работы в Java.Теперь программе нужно выполнить несколько вызовов managedQuery () для каждого жанра, и программа должна объединить результаты и сделать их различимыми с Java, за исключением sqlite (к которому относится эта работа).

Это действительно так?должно быть сделано?Нет ли способа просто отправить необработанный запрос в файл базы данных sqlite?

Спасибо!

1 Ответ

2 голосов
/ 01 августа 2012

Нет, вы не можете напрямую получить доступ к базовой структуре базы данных - на самом деле у вас нет возможности узнать фактическую структуру базы данных, она изменилась в разных версиях платформы. Единственные прямые запросы, которые вы можете сделать, это те, которые предоставляются через протокол MediaStore поставщика контента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...