- Основы Contacts API в Android
- Введение
- Структура данных
- Работаем с контактами
- How to Non-manually Add Contacts to Android Phone in Batch?
- Part One: Add Multiple Contacts to Android in Batch with Android Assistant
- Part Two: Export Contacts to Android from Other Phones with Mobile Transfer
- Part Three: Import CSV Contacts from PC to Android via Google Account
- Part Four: Migrate Outlook Contacts to Your Android Phone
Основы 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. Я надеюсь мне удалось описать здесь основные принципы, а вся конкретика зависит от того, что вам необходимо сделать в процессе работы. Можно просто руководствоваться этими принципами и находить в официальной документации интерфейсы которые вам нужны для работы. Успехов!
Источник
How to Non-manually Add Contacts to Android Phone in Batch?
How to add contacts to Android phone in a batch automatically? If you are looking for the way to add contacts on Android phone quickly, it is necessary to pick up a few tips and tricks. Transferring contacts to Android phone via email could be one of the solutions, however, it is time-consuming and fussy, which is not the best way to add contacts to Android. So how to make it easier?
In the following content, we will tell you how to add contacts to Android in batch within clicks and how to transfer contacts to Android from other phones.
Part One: Add Multiple Contacts to Android in Batch with Android Assistant
The good news is that there is a tool out there which can simplify the process. The Coolmuster Android Assistant is a third-party app designed to transfer data between Android and computer. It is not just great for transferring and transporting contacts, SMS, music, photos, videos and other files from or to computer either. Because it can be used to add contacts to Android phone, delete contacts from Android phone and backup Android contacts on computer directly. This makes it great for sharing music with friends, adding contacts quickly, copying photographs to multiple devices and transferring important text messages and more.
If you are using a Mac machine, you can turn to Coolmuster Android Assistant for Mac. Coolmuster Android Assistant is quick to download, easy to use and promises data transfer can be 100% secure. Read the following part to learn how to add contacts to Android mobile phone by using this Android Assistant.
Step 1. Download and launch this Android Assistant tool
To begin with, all you have to do is downloading and installing the recommended program and link up your Android device to the computer using a USB cable. Once the program interface has appeared, you should see a list of all the Android phone data currently on your device. If not, you may need to enable USB debugging on your Android beforehand.
After enabling the USB debugging, all your phone information, including phone model, system version and storage space size will be shown in the main interface like below.
Step 2: Add contacts to Android phone on computer effortlessly
Navigate to the «Contacts» tab on the left panel and click on the small triangle in front of it. Then, choose «All Contacts» to enter and contact managing window. Now, you can select «New» option from the top menu and add your new contact information in the pop-up window.
Tips: You can also click «Import» button to transfer contacts from computer to your Android phone with one click.
The benefits of using Coolmuster Android Assistant:
As the Coolmuster Android Assistant can be so easily used to create new contacts on an Android phone, as well as moving contacts between a computer and an Android device, it is very useful when it comes to creating backup copies of valuable data caches. This is an essential process for all Android users, because technology is not infallible — it does run into problems sometimes, and you can run the risk of losing important data if it is not safely backed up.
Video Tutorial
Part Two: Export Contacts to Android from Other Phones with Mobile Transfer
If you want to transfer contacts to your Android phone from other phones, you can draw support from the excellent Coolmuster Mobile Transfer (Windows) or Mobile Transfer for Mac. In fact, there are three options you can choose from the program:
Phone to Phone Transfer — when you are transferring data, such as contacts, SMS, photos, videos, music, apps, etc. between phones;
Back up your phone — for when you want to backup data on your phone;
Restore from backups — for when you want to retrieve the data from your backups.
To transfer contacts from other phones to Android phone, you should pick up the first Phone to Phone Transfer mode. Now, just click the following button to download the right version of the software and then read the following guide.
Step 1. Connecting the two phones to computer
Use two USB cables to connect your two phones to the computer where you have the Coolmuster Mobile Transfer downloaded and installed. Launch Mobile Transfer to get ready.
Step 2: Selecting the Phone to Phone Transfer option
Now select the Phone to Phone Transfer option from the program interface and click on the «Start» button to enter the phone transferring window. Then, the two phones, as well as all transferable file types are displayed here.
Step 3. Transfer contacts to your Android phone
If you only want to transfer contacts, you can select «Contacts» option only. Then, select the contacts you need and click the transferring arrow pointing to your Android phone to begin the contacts transfer process.
Thus, you can transfer all your contacts from other phones to your Android phone with just one click.
Part Three: Import CSV Contacts from PC to Android via Google Account
CSV is a popular file format for saving phone contacts. If you want to import CSV contacts from computer to Android phone, and at the same time, you have a Gmail account, you can follow the simple steps below to import CSV contacts to Android using your Google account.
Step 1: Sign into your Google account and go to the top left screen to click «Gmail». Then, you can get a drop-down box, from where you should click on «Contacts».
Step 2: After you enter the Contacts tab, find More and click on «Import» option from the drop-down menu.
Step 3: Now, you can select «Choose File» option to locate to the CSV file you have saved and import it to your Gmail account.
Step 4: After the steps above, the CSV contacts file has been synced to your Gmail account. Now, you can sign into your Gmail account on your Android phone.
Step 5: Choose «Settings» > «Accounts & sync» options on your Android phone and find your Google account and choose it. Then, choose «Sync Contacts» > «Sync now», and then, all CSV contacts will be imported on your Android phone.
Part Four: Migrate Outlook Contacts to Your Android Phone
Finally, we have a simple method for getting your Outlook contacts to your Android device. Before we start, please make sure your Android phone is connected to a working Gmail account.
Step 1: Export contacts from Outlook
Open Outlook and export contacts in Outlook to a file. Name and find a location to save the exported file. Then, click Finish.
Step 2: Import the contacts into Gmail
Sign into your Gmail account and click «Mail» > «Contacts» > «Import». After you click Import Contacts, a new window will appear. Select the Choose File button, locate the file exported from Outlook, and then click the Import button.
Step 3: Sync Outlook contacts to your Android phone
Now, you can turn to your Android phone, open «Contacts», click the menu button, tap «Account», choose «Google account», click the menu button and then tap «Sync Now». After that, all your Outlook contacts will be synced to your Android phone.
Источник