Получать контакты из базы данных SQL по определенным критериям на Android
Как запросить все контакты, соответствующие определенным критериям на Android?
Допустим, я хочу иметь все контакты, у которых есть имя, номер телефона, но нет изображения профиля.
Как я понимаю, что касается SQL, мне нужен какой-то выбор, который передается моему запросу, но как он будет выглядеть в приведенном выше примере?
Я спрашиваю, потому что я в настоящее время запускаю приложение, которое сначала запрашивает все контакты, а затем я перебираю его и фильтрую, что кажется гораздо менее производительным, чем прямой запрос нужных контактов.
1 ответ
Вы правы в том смысле, что контакты хранятся в базе данных SQLite, но доступ к ним осуществляется через поставщик содержимого контактов.
Поставщик контента для контактов организован в виде трех таблиц. Внизу структуры данных лежит таблица данных. Здесь вы найдете все данные, которые относятся к конкретному RawContact (будет обсуждено в ближайшее время). В таблице данных хранится такая информация, как номера телефонов, электронные письма, адреса и т. Д. Это достигается использованием пар значений MIME-имен, определенных в базе данных mimetypes. На один уровень выше - база данных RawContacts. Здесь вся информация, относящаяся к одной и той же учетной записи (то есть контакт Джон Доу может иметь учетную запись в Twitter и Facebook). Короче говоря, таблица RawContacts отслеживает типы данных MIME, которые относятся к одному и тому же человеку, поэтому нет необходимости хранить одну и ту же информацию несколько раз для разных учетных записей. В верхней части структуры данных у вас есть таблица контактов, которая группирует всю информацию для одного человека. Это в основном способ объединения всех данных учетной записи в один контакт. Думайте об этих контактах, как вы это делаете регулярно.
Вы должны взглянуть на класс Loader, который позволит вам выполнять запросы в фоновом потоке. Если вы используете этот класс после реализации обратного вызова Loader для Cursor, вы создадите CursorLoader. Одним из его параметров конструкторов является типичное предложение MySQL where, где вы можете указать ограничения, которые вы хотите включить в свой запрос.
Здесь вы найдете руководство по загрузчикам для запроса базы данных.