Управление контактами в Android (импорт, экспорт, перенос, настройка)
При покупке нового телефона всегда встаёт вопрос о переносе контактов из старого в новый. Всё проще если перенос производится с телефонами одной марки, (т.к. большинство производителей предусмотрели эту нехитрую задачу) или же если они изначально хранились на сим карте. Но ведь часто приобретаешь новый телефон от другого производителя или вовсе не пользуешься памятью сим карты, так как количество телефонов или другой нужной информации превысило возможности сим карт.
В статье будет рассмотрено:
- Варианты хранения контактов
- Получение копии контактов с телефонов Nokia S40, S60
- Синхронизация контактов
- Группировка контактов в телефонной книге
- Настройка уведомлений о днях рождения
- Обратная синхронизация с S40, S60
Варианты хранения контактов
Контакты можно хранить в трёх местах: SIM карта (прошлый век), в памяти телефона и в профиле Gmail. Я думаю первый вариант можно пропускать, так как в наше время у всех людей по 2-3 номера не считая домашних номеров, и памяти сим карты просто не хватит. Хранение контактов в памяти телефона на базе Android не отличается от других мобильных телефонов. Последний вариант интересен своими возможностями. Перед продолжением Вам следует определиться с выбором памяти для контактов. Я лично выбрал вариант хранения в профиле Gmail как самый производительный.
Выбор памяти: Контакты -> [Меню] -> Опции -> Настройки -> Сохранять контакты -> Здесь нужно выбрать память (Рекомендую профиль Gmail). Так как настройка аккаунта выходит за рамки этой статьи то здесь не рассматривается целиком, а только в части синхронизации аккаунта.
Получение копии контактов с телефонов Nokia S40, S60
Есть несколько вариантов для этой операции. Рассмотрим самые простые.
Первый и самый простой заключается в использовании только телефона и Bluetooth:
Выделим все контакты. Заходим в Контакты -> [Функции] -> Отметить/Снять -> Отметить все
Далее передадим их по Bluetooth [Функции] -> Передать -> По каналу Bluetooth
В это время включим Bluetooth на нашем новом телефоне. Меню -> Настройки -> Беспроводные сети -> Параметры Bluetooth -> Включить, и здесь же Открыто
На Nokia выбираем второй телефон и передаём ему контакты.
Осталось только подождать, когда закончится передача. После передачи контакты сразу попадают в записную книжку. Остаётся только очистить список уведомлений [Меню] -> Очистить список
Минусом этого варианта является то, что если в контактах были сделаны заметки на русском языке, могут быть проблемы при записи. Скорее всего, такие контакты просто останутся висеть во временном каталоге /sdcard/bluetooth. Их придётся добавлять отдельно. Если вы выбрали хранение в профиле Gmail, то их можно будет добавить по примеру в следующем шаге.
Второй вариант будет нужен, если на вашем старом телефоне не установлен Bluetooth, а так же для всех остальных вариантов.
В этом случае нужно использовать Nokia PC Suite.
Открываем Nokia PC Suite -> Контакты -> Нажимаем Ctr+A -> Файл -> Экспорт -> Выбираем формат файла csv -> Выбираем путь и сохраняем.
Все контакты сохранятся в один файл.
Далее зайдём на http://gmail.com или http://www.google.com/contacts и входим под своей учётной записью Google/Gmail.
Выбираем [Дополнительные действия](Кнопка в Gmail. По второй ссылке сразу доступны следующие шаги) -> Импорт -> Обзор -> Выбираем Ваш csv файл с контактами -> Импорт
По итогу в первом случае ваши контакты хранятся на телефоне (и ждут синхронизации с сервером, если выбран профиль Gmail), во втором контакты хранятся в профиле и ждут синхронизации с телефоном.
Синхронизация контактов
Для того, что бы наши контакты были приведены в полный порядок, нужно синхронизироваться. Подчёркиваю, что не синхронизируются контакты хранящиеся в памяти телефона.
Подключаем синхронизацию: Меню -> Настройки -> Учётные записи -> Отмечаем пункт «Фоновые данные» и «Автосинхронизация» -> Далее в низу выбираем учётную запись и проверяем, включена ли синхронизация контактов (по умолчанию все включено). Выбор остальных пунктов остаётся за Вами. После этого через короткий промежуток времени контакты, импортированные в Gmail, должны отобразиться в контактах телефона. Сохранённые контакты на телефоне (при выборе памяти Gmail) должны будут отобразиться в контактах на почте.
Группировка контактов в телефонной книге
Теперь все наши контакты должны быть видны как в телефоне, так и в контактах профиля Gmail. Приоритет синхронизации при изменении отдаётся последней редакции.
Если была выбрана память телефона, то создание групп происходит достаточно просто: Контакты -> Группы -> [Меню] -> Задаём имя и мелодию группы по желанию.
Для добавления контакта в группу заходим в неё и нажимаем на пиктограмму силуэта человека со знаком ‘+’ возле поля поиска. Выбор будет возможен только из контактов хранящихся в памяти телефона.
Если используется память профиля Gmail, то создание групп несколько усложняется так, как по непонятным причинам создание групп для профиля недоступно (надеюсь, вскоре исправят этот, как мне кажется, недочёт). Каталогизацию контактов можно производить и из Gmail. Но можно и на телефоне. Для этого понадобится приложение aContacts. Найти его можно в Маркете, имеет русский интерфейс в настройках. Его также можно назначить на стандартное использование при наборе номера или совершения звонков. Но лично я рекомендую использовать только для создания групп.
Заходим в приложение: [Groups] -> [Новая группа] -> Вводим имя новой группы.
Для добавления в группу: Выбираем контакт (удерживаем) -> Группировка -> Добавить в группу -> Выбираем нужную группу.
После синхронизации группы создадутся и в Gmail.
Настройка уведомлений о днях рождения
Достаточно удобно, когда дни рождения родственников или коллег заранее отображаются в календаре. По умолчанию такой возможности не предусмотрено.
Можно установить виджет с напоминаниями. Наиболее простой и не перегруженный «Birthday Countdown». Найти его можно в Маркете. Настройки практически не требует.
Ещё можно сделать, что бы дни рождения отображались в календаре. Если контакты хранятся в профиле Gmail: Входим под нужным аккаунтом в http://www.google.com/calendar -> Настройки -> Настройки Календарь -> Календари -> Просмотреть интересные календари -> Дополнительно -> Выберите «Дни рождения и мероприятия контактов» и нажмите Подписаться
После этого нужно синхронизировать календарь там же в меню настроек синхронизации. По завершению дни рождения должны будут отобразиться в календаре.
Обратная синхронизация с S40, S60
Уже давно в телефонах заложена функция синхронизации. Но по объективным причинам она не используется часто. Google полностью перевернул это, до состояния необходимости и удобства, используя свои технологии. Но всё же для тех, у кого несколько телефонов и сим карт, можно также синхронизировать контакты со своим старым аппаратом по технологии SyncML. Минус этой синхронизации — передача основных полей контакта, таких как номера телефонов, имя, фотография. Поэтому лучше синхронизацию производить от сервера к телефону. Я думаю, вся информация на втором телефоне уже не так актуальна. Ведь наиболее важным остаётся всё-таки номер телефона и имя. И очень удобно, если они обновляются вовремя. Поэтому этой технологии должно вполне хватать. В общем, стоит обновлять контакты только в направлении от сервера к мобильному телефону.
Для настройки S60 заходим: Меню -> Связь -> Синхр. (Синхронизация) -> [Функции] -> Нов. проф. синхр
Для настройки S40 заходим: Меню -> Настройки -> Конфигурация -> Настр.персональн.конф. -> Добавить новый «Синхронизация»
Далее вводим следующие настройки:
Имя профиля: любое_имя
Канал передачи данных: Интернет
Точка доступа: точка_доступа_gprs
Адрес сервера: https://m.google.com/syncml
Порт: 443
Имя пользователя: логин_от_gmail
Пароль: ваш_пароль
Далее заходим на вторую закладку. Будем синхронизировать только контакты (остальное можно переключить в )
Выбираем: Контакты -> Да
Выставляем настройки:
Удалённая БД: contacts
Тип синхронизации: Обновлять телефон (т.е. выставляем направление синхронизации, о чём говорилось раньше)
Всё. Настройка завершена. Делаем бэкап контактов, удаляем контакты из записной книги Nokia и пробуем запустить синхронизацию. Если всё запустилось удачно, то будет обычное окошко со статусом и по завершению операции нас уведомят.
Так же можно передавать контакты обратно по Bluetooth. Но согласитесь, зачем возвращаться в прошлый век?
Заключение
Android дитя двух сущностей, которые были созданы в сети и стали важными частями её самой — это Linux и Google. Весь потенциал Android’а раскрывается только при полной работе с сетью. Постоянная мощность развития Google привязывает и в тоже время даёт огромный потенциал для устройства на базе Android.
Источник
Основы Contacts API в Android
Введение
Начиная с версии 5 API Android SDK интерфейс работы с контактами изменился, а основной контент провайдер Contacts и все его составляющие получили черную метку @Deprecated. Теперь за работу с контактами отвечает провайдер ContactsContract. Эти изменения связаны с изменением структуры хранения контактов, более адаптированной для Android устройств, которым требуется хранить контакты из множества разных источников и предоставлять их пользователю как единую сущность. Ведь сегодня, определенный контакт на нашем мобильном устройстве это не только имя и номер телефона, мы можем захотеть сохранить eMail, Im, Twitter, Facebook аккаунт определенного человека, и при этом, мы не хотим чтобы у нас нас появилось миллион непонятных записей. Поэтому новый Contacts API позволяет Android агрегировать похожие контакты и представлять их пользователю в одной записи, а также связывать контакт с разного рода данными.
Структура данных
На устройстве основная информация о контактах хранится в трех таблицах, на деле их там конечно больше, но мы рассмотрим основные три: contacts, raw_contacts и data. Чтобы было более наглядно я набросал простую схему в Dia.
В таблице contacts хранятся агрегированные контакты, каждая запись в этой таблице представляет собой пользовательский контакт (единую сущность) – объединение одного или нескольких сырых (необработанных) контактов из таблицы raw_contacts. Как видно на схеме, связь между этими таблицами один ко многим (1-N). Одна запись в таблице raw_contacts представляет собой так называемый сырой контакт. Сырой контакт, на языке Android, означает какой-то конкретный набор данных для определенного контакта. Но сами основные данные в этой таблице не хранятся, они хранятся в таблице data, и связь между raw_contacts и data также один ко многим. В таблице data хранятся непосредственно данные. Причем каждая строка этой таблицы это набор данных определенного типа для контакта. Какого именно типа данные хранятся в строке определяется столбцом mimetype_id, в котором содержится id типов данных определенных в таблице mimetype(например vnd.android.cursor.item/name, vnd.android.cursor.item/photo). Теперь разберемся во всем по подробней и с примерами.
Работаем с контактами
Хорошо, допустим мы хотим добавить контакт (Robert Smith, моб.тел. 11-22-33), как нам это сделать? В таблицу contacts мы сами, явно, не можем добавить контакт, так как система сама формирует эту таблицу агрегируя похожие raw_contacts. Идентичность контактов система определяет в основном по имени (одинаковые имена, фамилии и т.п.), но и по другим критериям, каким именно и как ими управлять можно посмотреть в документации. То есть, если мы добавим raw_contact нашего Роберта (Robert Smith) и свяжем его с данными типа vnd.cursor.android.item/phone, а потом у нас появится “похожий”, для системы, Robert Smith связанный с данными типа vnd.cursor.android.item/email и еще один с данными типа vnd.cursor.android.item/photo, то у нас в контактах будет один Robert Smith с фотографией, мобильным и email’ом.
Теперь попробуем переложить это на код. За таблицы и их поля отвечает, как я уже говорил, класс ContactsContract и его внутренние классы и интерфейсы. Например интерфейсом к таблице raw_contacts является класс ContactsContract.RawContacts, а за таблицу data класс ContactsContract.Data. Будьте внимательны когда изучаете их константы – интерфейсы к столбцам – обращайте внимание на метки read/write и read only.
Из написанного выше следует, что для начала, мы должны добавить сырой контакт, а потом связывать его с данными. Добавить пустой контакт можно так:
В контактах у вас должен появиться пустой (Unknown) контакт, ни с чем не связанный. Добавим ему имя. Чтобы это сделать, мы должны связать наш новый контакт с новыми данными используя его id, который можно достать из прошлого запроса. Основные интерфейсы к полям таблицы данных содержаться в классе-контейнере ContactsContract.CommonDataKinds и его внутренних классах и интерфейсах. Например, сейчас нам понадобиться
класс ContactsContract.CommonDataKinds.StrucruredName содержащий нужные нам константы для добавления имени, а также константу MIME типа, которой мы пометим наше поле в таблице данных.
Если мы добавим контакт таким образом, то в списке контактов у нас появиться Robert Smith. Теперь идем дальше, добавим нашему контакту еще и телефон. Для этого нам понадобиться класс ContactsContract.CommonDataKinds.Phone, который является интерфейсом к данным телефонного номера.
Теперь в контактах у нас есть Robert Smith которому можно позвонить. Но вот так добавлять контакт и данные к нему, в несколько запросов, дорого и накладно. Поэтому существует класс ContentProviderOperation, который позволяет построить запрос, который выполнит все наши операции за одну транзакцию. Именно им и рекомендуют пользоваться. Вот так можно добавить нашего Роберта используя ContentProviderOperation.
Вот таким образом в Android можно добавлять контакты. Будьте осторожны используя ContentProviderOperation, так как слишком большой запрос может долго выполняться. Вообще все операции лучше производить в отдельном потоке, потому, что у пользователя, например, может быть слабый телефон и много контактов.
В остальном все другие операции выполняются обычным образом, используя те провайдеры, которые вам необходимы, с некоторыми оговорками. Например, удаление контакта из таблицы contacts удалит все raw_contacts с ним связанные и т.д.
Вот так можно попробовать найти нашего Роберта в контактах:
На этом хотелось бы завершить статью, все же это были только основные сведения о Contacts API в Andoid. Я надеюсь мне удалось описать здесь основные принципы, а вся конкретика зависит от того, что вам необходимо сделать в процессе работы. Можно просто руководствоваться этими принципами и находить в официальной документации интерфейсы которые вам нужны для работы. Успехов!
Источник