410013796724260
• Webmoney
R335386147728
Z369087728698
Необработанные контакты в AndroidВ предыдущей статье описания контактов в ОС Android была рассмотрена общая структура контактов. В данной статье рассмотрим структуру необработанных контактов. Как было отмечено ранее основная информация о контактах в устройстве хранится в трех основных таблицах : ContactsContract.Contacts, ContactsContract.RawContacts и ContactsContract.Data. Остальные таблицы класса ContactsContract представляют собой вспомогательные таблицы, которые поставщик контактов использует для управления своими операциями или поддержки определенных функций, имеющихся в приложении устройства «Контакты» или приложениях для телефонной связи. В таблице Contacts хранятся данные о пользователях, полученные путем агрегации строк необработанных контактов, поступающие от одного аккаунта определенного типа. В связи с тем, что в качестве источника данных о пользователе в поставщике контактов может выступать сразу несколько online-служб, то для одного и того же пользователя в поставщике контактов может существовать несколько необработанных контактов, регистрируемых в таблице RawContacts. Это позволяет объединять пользовательские данные из нескольких аккаунтов одного и того же типа. То есть, записи таблицы Contacts имеют связь с записями таблицы RawContacts в виде отношения один-ко-многим. Бо́льшая часть данных необработанного контакта хранится не в таблице RawContacts, а в таблице Data. Связь между записями RawContacts и Data также имеет отношение один-ко-многим. Т.е. в таблице Data хранятся непосредственно данные о контакте. Каждая строка данной таблицы представляет набор данных определенного типа, определяемого столбцом mimetype_id, хранящего идентификатор id типа данных из таблицы mimetype (например, vnd.android.cursor.item/name, vnd.android.cursor.item/photo). Кроме этого, в каждой строке данных имеется столбец Data.RAW_CONTACT_ID, в котором содержится значение его родительской строки RawContacts._ID. В следующей таблице представлены столбцы RawContacts, имеющие важное значение :
Важные примечания к таблице RawContacts :
Источники данных необработанных контактовЧтобы понять, что такое необработанный контакт, рассмотрим пример с Eleonore Dickins, имеющую следующие аккаунты : два email и учетную запись в Twitter :
Eleonore включила функцию «Синхронизировать» контакты для всех трех этих аккаунтов в настройках «Аккаунты». Предположим, что Eleonore открывает свой почтовый ящик Gmail под именем eleonore.dickins@gmail.com. После этого открывает «Контакты» и добавляет новую запись Sherlok Holms, имеющего аккаунт «sherlok-holms» в Twitter. Несколько позже она снова открывает Gmail, но под именем eleonored@gmail.com и отправляет письмо пользователю Sherlok Holms, который автоматически добавляется в её «Контакты». Кроме этого, она подписана на новости «news-sh» в Twitter от «sherlok-holms». В результате выполнения этих действий поставщик контактов создаст три необработанных контакта :
На следующем рисунке представлены взаимосвязи этих трех таблиц для приведенных выше записей аккаунтов. Таблица данныхКак было отмечено выше, записи необработанного контакта хранятся в Data, и имеют связь со значением _ID необработанного контакта. Это позволяет для одного необработанного контакта иметь несколько экземпляров одного и того же типа данных, например, адресов эл. почты или номеров телефонов. В таблице ContactsContract.Data хранится информация об имени, номере, эл.почте, почтовом адресе, фото. Для управления данными в таблице ContactsContract.Data предусмотрены столбцы с описательными именами, а также столбцы с универсальными именами. Содержимое в столбце с описательным именем имеет то же значение, независимо от типа данныхRAW_CONTACT_ID MIMETYPE IS_PRIMARY Универсальные столбцыС универсальными именами имеется 15 общедоступных столбцов : DATA1–DATA15. Адаптеры синхронизации используют четыре дополнительных столбца : SYNC1–SYNC4. Столбец DATA1 является индексируемым. Поставщик контактов предполагает, что данные этого столбца будут наиболее часто являться целевыми в запросах. Cтолбец DATA15 обычно зарезервирован для данных больших двоичных объектов (BLOB), таких как миниатюры фотографий. Связанные страницы |