- Основы Contacts API в Android
- Введение
- Структура данных
- Работаем с контактами
- Adding contacts programatically using Contacts Provider in Android – Example
- Контакты на Андроид: как перенести, синхронизировать, добавить и удалить
- Что можно делать с контактами на Андроид?
- Где можно хранить контакты на Андроид?
- Синхронизация контактов с Google
- Еще приложения для работы с контактами на Android
- Перенос контактов с Android на Android
- Полезные советы, которые упростят работу с контактами
- Контакты из FaceBook, Вконтакте и мессенджеров в телефонной книге
- Заключение
Основы 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. Я надеюсь мне удалось описать здесь основные принципы, а вся конкретика зависит от того, что вам необходимо сделать в процессе работы. Можно просто руководствоваться этими принципами и находить в официальной документации интерфейсы которые вам нужны для работы. Успехов!
Источник
Adding contacts programatically using Contacts Provider in Android – Example
In this article we will create an Android application which allows users to add new contacts to Android’s Contact Manager. We will make use Android’s Contacts content provider to add contacts to the Contact Manager.
An extension to this article is discussed in the article “Programatically adding contacts with photo using Contacts Provider in Android – Example“, where photos can also be added to the Android’s Contact Manager using Contacts Provider API.
This application is developed in Eclipse ( 4.2.0 ) with ADT plugin ( 20.0.3 ) and Android SDK ( R20.0.3 ).
1. Create a new Android application project namely “ContactsAdd”
Figure 1 : Create new Android application Project
2. Design application launcher icon
Figure 2 : Design application launcher icon
3. Create a blank activity to define the class MainActivity
Figure 3 : Create a blank activity
4. Enter MainActivity details
Figure 4 : Enter MainActivity Details
5. Delete Android’s Support library from this project, if exists
By default Eclipse ( 4.2.0) adds Android Support Library to Android application project. For this application, we don’t need to use this support library. So the library file libs/android-support-v4.jar may be removed manually via ProjectExplorer by simply right click on the file and then clicking the menu item “delete”.
6. Update the file res/values/strings.xml
7. Update the file res/values/styles.xml
8. Update the file res/values-v11/styles.xml
9. Update the file res/values-v14/styles.xml
10. Update the layout file res/layout/activity_main.xml
11. Update the class MainActivity in the file src/in/wptrafficanalyzer/contactsadd/MainActivity.java
12. Update the file AndroidManifest.xml to provide the necessary permissions
13. Screenshots of the application
Figure 5 : Entering new Contact Details
Figure 6 : Viewing the above added contact in Android’s Contact Manager
Источник
Контакты на Андроид: как перенести, синхронизировать, добавить и удалить
Со стремительным развитием смартфонов, наращиванием производительности, улучшением камер многие начали забывать, пожалуй, об одной из ключевых особенностей мобильных устройств – список контактов. Контакты Андроид – это своего рода сокровищница вашего смартфона, в которой может храниться немало информации о конкретном человеке. Однако не каждый пользователь догадывается о функциональности списка контактов на современных девайсах. Что ж, мы готовы поделиться с читателями основами управления контактами на Андроид.
Что можно делать с контактами на Андроид?
Управлять контактами в одно время и сложно и легко. Дело в том, что современные смартфоны получают приложения контактов от производителя, которые могут отличаться друг от друга. Для начала хотелось бы рассмотреть ключевые возможности на одном из примеров.
Как правило, контакты на Андроид представлены отдельным системным приложением, которое выносится на главный рабочий стол. Сопровождается соответствующим названием и информативным значком. Найти список контактов не составит труда.
Открыв его, мы получаем отсортированный по именам список контактов, дополненный довольно понятным интерфейсом. Здесь, помимо имен, самые необходимые функции:
- поиск нужного контакта;
- иконка «Плюс» для добавления нового номера;
Дополнительные опции можно получить, долго удерживая палец на одном из контактов. В открывшемся контекстном меню мы сможем удалить, изменить, перенести в группу или отправить контакт. Все очень понятно.
Несложно организована и функция добавления новых имен. На современных Андроид-смартфонах она значительно разнообразнее, нежели телефонные книжки на старых кнопочных «звонилках». Здесь, помимо номера телефона и имени, можно указывать кучу полезной информации об абоненте.
Информация в контактах
- ФИО, звания, рабочие места.
- Мобильный, домашний или рабочий номер (можно самостоятельно создать новый тип).
- Куда же без электронной почты или факса.
- Задать отдельную мелодию, установить фото или картинку, занести в группу – все это тоже можно делать.
Как видите, функционал даже стандартного средства очень широк. А представьте, на что способны сторонние приложения, в которые можно сохранить контакты. Хотя нет, не представляйте. Мы сейчас о них вам расскажем.
Где можно хранить контакты на Андроид?
В процессе создания нового контакта вам доступна возможность выбрать, куда он будет сохранен. До недавних пор приходилось ограничиваться памятью SIM-карт и телефонов, сегодня же к ним прибавились приложения и облачные сервисы.
Понятное дело, что самым простым вариантом для многих пользователей станет сохранение контактов прямо в память телефона. В этом случае не придется заводить нигде учетных записей или скачивать какие-либо приложения – по умолчанию сохранение будет произведено на телефон. Однако есть достаточно заметный недостаток у этого способа хранения. Ни один производитель не в силах гарантировать, что смартфон в один прекрасный момент не выйдет из строя, а все, данные, включая контакты, восстановить уже не получится.
Для обеспечения безопасности контактов как раз и разрабатываются специальные приложения. Они и новых возможностей привнесут, и обеспечат надежную сохранность посредством специальных облачных сервисов. Однако не стоит бежать в Google Play или на веб-сайты и искать приложения – в системе Андроид все уже продумано.
Синхронизация контактов с Google
Поисковый гигант старается постоянно совершенствовать свою операционную систему, расширяя возможности пользователей. Для различных задач разработчик предлагает набор Google-сервисов, а также возможность сохранения контактов Android.
Сама по себе данная возможность нужна для того, чтобы пользователь мог получить доступ к списку контактов на любом устройстве, привязав его к своей учетной записи Google. Не важно, сломался ваш телефон или вы приобрели себе новый – список всегда будет при вас. В случае использования синхронизации контакты хранятся не только на смартфоне, но и на серверах компании, к которым вы можете получить доступ в любой момент.
Для того чтобы сохранить контакты на серверах Google, потребуется учетная запись.
Создание учетной записи Google
- нужно зайти в настройки устройства, где найти пункт «Учетные записи и синхронизация» (может располагаться в дополнительных настройках);
- в новом окне необходимо выбрать «Добавить учетную запись», а из предложенного списка сервисов выбрать Google;
- на выбор вам будет предложено два варианта: добавить уже существующие данные учетной записи или создать новую;
- следуя подсказкам, создайте новую учетную запись (или введите логин и пароль от уже имеющейся) – разберется любой.
По сути, все готово. Остается только зайти в добавленные учетные записи («Настройки» — «Учетные записи и синхронизация»), выбрать Google. Откроется список приложений, которые могут быть синхронизированы (Контакты, Календарь, Документы и другие) – просто нажимайте на те, информацию из которых хотите сохранить на сервере (или нажмите кнопку «Синхронизировать», чтобы сделать для всех).
Также доступна функция автоматической синхронизации (необходимо сделать активным переключатель напротив соответствующего пункта в настройках учетных записей), которая будет за вас сохранять новые контакты Android. Следует лишь помнить, что она требует подключения к Сети.
Google Контакты
После первой синхронизации ваш список появится в Google Контакты (www.google.com/contacts), куда вы можете зайти даже с персонального компьютера. Здесь вы можете просматривать и редактировать информацию об абонентах, добавлять новых.
Google Контакты – действительно стоящий сервис компании, который может значительно упростить процесс сохранения и переноса контактов. Из достоинств можно выделить:
- способ бесплатен;
- очень простой;
- удобный;
- функциональный;
- возможность управления контактами с любого устройства.
Однако и недостатки хотелось бы озвучить:
- во-первых, если злоумышленник получит доступ к вашему аккаунту Google, то у него на руках окажется, помимо прочей информации о вас, еще и список контактов;
- во-вторых, если прислушаться к пользователям параноикам, то любая крупная корпорация так и норовит собрать побольше информации о нас. И ведь толику правды в этом разглядеть можно.
Еще приложения для работы с контактами на Android
Среднестатистическому пользователю вполне достаточно и стандартной телефонной книги с ее функциональностью, дополненной возможностями Google Контактов для надежного хранения. Однако в некоторых случаях производитель устройства предоставляет пользователю очень плохое приложение по умолчанию, которое работает с кучей ошибок. Если вы оказались в числе несчастливцев, то мы вам рекомендуем следующие сторонние приложения.
Контакты+
Любопытное приложение для работы со списком контактов, которое привлекает своим красочным интерфейсом. Пользователю доступна возможность менять темы, назначать аватарки, а также сортировать имена по заданным параметрам. Распространяется бесплатно, однако в самом приложении есть опция покупок. Помимо этого, «Контакты+» предлагает функцию резервного копирования, при которой сохраняются номера абонентов, SMS и журнал звонков. Правда, в бесплатной версии можно сохранить до 2000 контактов.
Контакты VCF
Это приложение интересно, прежде всего, способом сохранения контактов. Вместо привычной базы данных «Контакты VCF» создает файл с расширением .vfc, который удобно использовать при импорте/экспорте списка. Особенно полезно будет в случаях, когда нужно срочно восстановить список контактов Android из резервной копии. В остальном же не сильно отличается от стандартных инструментов.
Simpler Контакты Набор номера
Приложение готово предложить наиболее широкие возможности. Помимо телефонной книги, оно включает наборщик номера и редактор SMS. Плюсом к этому станет функция резервного копирования, позволяющая сохранить копию в память смартфона или в облачное хранилище.
Как перенести контакты
Операционная система Android, обходя многих конкурентов, предоставляет удобные способы переноса контактов на другие устройства.
Перенос контактов с Android на Android
Самый простой способ скопировать все контакты с одного смартфона Андроид на другой – задействовать учетную запись Google. Вы же еще не забыли, что каждый девайс, работающий на ОС от Google, может быть привязан к единому аккаунту? Нам нужно выполнить всего несколько действий:
- оба смартфона должны быть привязаны к одной учетной записи Google;
- на обоих смартфонах необходимо выполнить синхронизацию.
Так, в считанные секунды контакты с одного телефона перекочуют на другой. Однако оба устройства должны быть подключены к сети Интернет.
Также в переносе готов помочь беспроводной интерфейс Bluetooth. Для начала необходимо подключить одно устройство к другому, затем – выбрать контакт из телефонной книги и нажать «Поделиться». В новом окне появится список средств, среди которых есть и Bluetooth.
Примерно таким же образом происходит отправка контакта через месенджеры, социальные сети, облачные хранилища, SMS, MMS и так далее.
Наконец, можно воспользоваться довольно старым методом переноса, задействовав карту памяти или SIM. Для этого:
- необходимо найти пункт «Импорт/экспорт контактов» (через контекстное меню (три точки вверху справа) или в настройках устройства (пункт «Контакты»);
- выбираем «Экспорт» и куда необходимо сохранить копию – SIM-карта, карта памяти или внутренний накопитель;
- установить носитель (SIM или карту памяти) в другой смартфон и вновь перейти к импорту и экспорту контактов, только в этот раз выбрать второе, указав путь к расположению копии.
Перенос контактов с Android на iPhone (и наоборот)
Придется задействовать почту Gmail, чтобы заставить список контактов перебраться с устройства Андроид на Айфон. Итак, по умолчанию телефонная книга на iPhone привязана к iCloud. Нам необходимо изменить выбор на Gmail, не потеряв при этом список контактов. Для этого в настройках учетных записей iPhone нужно отключить синхронизацию контактов с iCloud, выбрав при этом во всплывающем окошке пункт «Оставить в телефоне». Так вся ваша телефонная книга останется не тронутой.
Затем мы здесь же в настройках iPhone делаем Gmail по умолчанию учетной записью для контактов. Через короткий промежуток времени произойдет синхронизация, а контакты появятся на устройстве.
Для переноса телефонной книги с iPhone можно создать файл VCard, который будет нести в себе базу номеров. Для этого задействуется персональный компьютер и сервис iCloud. Сохранить файл VCard можно на ПК, а затем перенести на Android-устройство. После чего делается импорт контактов, как мы описали чуть выше.
Перенос контактов с Windows Phone на Android
Самым простым способом переноса в этом случае будет использование учетной записи Outlook. Дело в том, что Windows Phone привязываются к Microsoft, а все записи хранятся как раз в Outlook. Нам нужно лишь установить официальное приложение Outlook из магазина Google Play и в настройках добавить учетную запись, после чего выбрать синхронизацию контактов. Способ очень простой, но с недостатком – в некоторых случаях нельзя редактировать контакты.
Можно пойти другим путем: создать файл CVS на Outlook.com, который и будет содержать копию телефонной книги. Делается это в пункте «Управление», где можно сделать экспорт и сохранить файл на компьютер. После этого, чтобы долго не возиться, можно прямо с ПК войти в Google Контакты, нажать слева «Еще», «Импортировать» и выбрать «Из файла CVS или vCard». Останется лишь в настройках учетных записей Android выполнить синхронизацию, если она не происходит в автоматическом режиме.
Полезные советы, которые упростят работу с контактами
Возможностям OС Android нет пределов. Операционная система предлагает немало полезных опций, о которых известно не каждому. Есть несколько «фишек», связанных и с телефонной книгой.
Контакты из FaceBook, Вконтакте и мессенджеров в телефонной книге
Вот вы знали о том, что в телефонной книге можно отобразить всех ваших друзей из социальных сетей с их номерами телефонов, фотографиями, датами рождения и другой информацией? Нет, тогда запоминайте инструкцию:
- зайдите в настройки устройства, затем – «Ученые записи и синхронизация»;
- перейдите к списку доступных аккаунтов и выберите нужный (FaceBook, Вконтакте или другие);
- нажмите «Синхронизация контактов»;
- из предложенного выберите, что нужно синхронизировать;
- завершите процесс нажатием кнопки «Синхронизировать».
Через пару моментов ваша телефонная книга пополнится новыми записями.
Восстановление контактов
Лучший способ восстановить контакты на Android – заранее создать резервную копию и синхронизироваться с Google. Даже специалист не готов гарантировать восстановление полностью удаленного контакта. Однако некоторые приложения обещают помочь пользователю с этой проблемой. Ярким примером является программа Data Doctor Recovery, которая довольно неплохо проявила себя в работе. Также успехом пользуются приложения MobileDev360, Restore Contacts, Deleted Contacts, доступные для бесплатной загрузки из Google Play.
Не факт, что помогут и приложения: многое зависит от загруженности системы и того, насколько давно производилось удаление. Выходом может стать обращение к оператору с запросом детализации звонков за определенный период.
Заключение
На этой ноте, пожалуй, подведем черту под нашей сегодняшней статьей. Список контактов, как вы могли уже понять, не такая уж простая функция, какой она кажется на первый взгляд. Современные технологии открывают доступ к всевозможным опциям и инструментам, которые превращают телефонную книгу в хранилище важной информации об абонентах. А разного рода сервисы позволяют с легкостью перебрасывать списки контактов с устройства на устройство, а также надежно хранить их на удаленных серверах. Надеемся, наш материал и вам поможет раскрыть весь потенциал телефонной книги.
Источник