- Основы Contacts API в Android
- Введение
- Структура данных
- Работаем с контактами
- How to Recover Phone Numbers on Android
- Part 1: Check If the Contacts Have Really Lost
- Part 2: Recover Contacts from Gmail Backup
- Part 3: Recover Phone Numbers from Samsung Account
- Part 4: Restore Lost Phone Numbers from Android Phone
- Related Articles
Основы 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 Recover Phone Numbers on Android
Have you ever accidentally deleted a phone number from your Android phone such as Samsung Galaxy S10 and S9? If you did, you would surely know how frustrating it is to lose contacts from your phone book. Maybe you can retrieve all them back from your outlook account or Gmail if you have backed up before. But is it possible to get those lost contacts numbers back without any backup?
In this article, it would introduce two methods to recover contacts from your Android phone, such as Samsung Galaxy S8, Google Pixel and OnePlus 3T. But before you try to find out the way to get back your data, you should firstly figure out if the contacts have really lost from your phone. Now please check it out.
Part 1: Check If the Contacts Have Really Lost
When you can’t see any contacts on your Android phone, you may think you have lost them completely. If you own an device with Android 4x such as Android 4.4, however, please do check if the contacts have really gone or not before you take any action to recover the data back on your Android . Just follow the below steps to confirm:
1. Go to «Contacts» on your phone.
2. Tap on the menu button on the top-right corner of the screen and choose «Contacts to display» option.
3. Select «All contacts» and check if it would display the contacts you are looking for.
If you make sure that the contacts have been lost without any doubt, please continue to read to get back the lost data.
Part 2: Recover Contacts from Gmail Backup
As you are able to back up your data such as contacts from Android to your Google Account, you can of cause restore the data from it. But you need to make sure that «Back up and sync» is on so that it would backup data automatically to Google Account. Now, please check the guide below to restore contacts from Google Account:
1. In order to recover the Gmail contacts, please sign into your Gmail and then go to your inbox.
2. Choose «Contacts» from the dropdown menu on the left pane. Click on «More > Restore contacts…» whether you can see the list of your contacts or not.
3. On the pop-up window, you are able to restore the contracts within 30 days. Choose the date and then click «Restore».
Part 3: Recover Phone Numbers from Samsung Account
If you have backed up phone numbers with your Samsung account, you can of course restore those lost contents by using the account. It is pretty simple to deal with it. Now, let’s check it out below.
Step 1 Please go to «Apps > Settings» on your Samsung screen.
Step 2 Scroll down and find out «Backup and reset» option.
Step 3 Tap on «Restore» under the Samsung account menu.
Step 4 Now you can see the contents such as messages, phone logs and more that you have backed up before via the account. Choose the data you want to get back and tap on the «RESTORE NOW» on the bottom.
Part 4: Restore Lost Phone Numbers from Android Phone
Here is a wonderful and effective way to recover your unfortunately deleted or lost Contacts phone numbers. It requires an Android phone contacts recovery tool: Android Photo Recovery, which allows you to undelete and recover your phone numbers directly, as well as messages, photos and videos from Android. Please get this program with below buttons to get back the deleted contacts to your Android phone contacts list. (When you click the download button on mobile phone, you will get 20% off discount.)
Note: Once you find your Android data get lost unintentionally, please try not to use your device if possible. It is because when you add or delete any phone number after losing data, the data you want to restore can be automatically overwritten. That is, your phone number that deleted unintentionally is likely to leave you forever.
Step 1 Connect your Android phone to the computer
Once you install and run the program, it will ask you to connect your Android phone to the computer. Please plug your Android into computer via the USB cable that is matched.
Step 2 Enable USB Debugging on Your Android
If your phone has not open USB debugging, this program will prompt you to move to your Android phone to enable USB debugging.
1) For Android 4.2 or newer: Enter «Settings» > Click «About Phone» > Tap «Build number» for several times until getting a note «You are under developer mode» > Back to «Settings» > Click «Developer options» > Check «USB debugging»
2) For Android 3.0 to 4.1: Enter «Settings» > Click «Developer options» > Check «USB debugging»
3) For Android 2.3 or earlier: Enter «Settings» > Click «Applications» > Click «Development» > Check «USB debugging»
After your device identified, you can get your Android ready to be scanned. Tick the ones you want so as to save more money. For example, «Contacts«, and click next to start the scan.
Step 3 Allow Software to Scan Lost Data
Note: Before starting, please make sure that battery of your device is more than 20% charged.
When you get a window as follows, turn back to your phone again and click «Allow» to permit FonePaw app installed and let it access phone data (contacts, call logs, messages and more) to begin the scan.
Step 4 Preview and Retrieve Phone numbers
The program will detect your phone and analyze it. As you cannot get the numbers that you need, you can move into Deep Scan mode to find more deleted items. When the scanning finish, you will find all your deleted (orange ones) or remained (black ones) contacts are listed on the right window. Choose those you want and click «Recover» to save them to your PC.
Tip: If there is no Deep Scan option for you, it means that the program has scanned your phone in deep mode and the results are displayed after deep scanning.
Step 5 Check the Result on PC
After recover your phone numbers on your computer, you can check the contacts you just restore on the folder which is pop-up automatically. On the folder, the contacts are exported in the format of SCV, HTML and Vcard.
Note: After recover your phone numbers to your computer, you can import them back to your Android phone.
Now, all your lost phone numbers have been saved on your computer with the help of this Android Photo Recovery. Though it could be possible to recover the deleted data, back up your Android data frequently will be encouraged to prevent your Android data from losing forever. In this way, please just back up Android data from time to time.
Related Articles
Ivy Bruce
Ivy Bruce is the Founder and Editorial Director at Recovery-Android Studio. You can also find her on Google+ and Twitter.
How to Transfer Videos from Computer to iPhone
User Guide of Phone to Phone Transfer Software
How to Recover Deleted File from Motorola Atrix
How to Transfer Music from Computer to Nexus
Источник