contacts.db или contacts2.db — это файл базы данных sqlite. Файл содержит в себе несколько десятков таблиц с информацией о группах, звонках, контактах, профилях, статусах и т.д. Т.е. все данные, которые имеются в телефоне android.
Откройте файл contacts2.db через любой sqlite-менеджер.
Просмотрим все доступные таблицы в БД contacts2.db:
SELECT name FROM sqlite_master WHERE type='table';
android_metadata
_sync_state
_sync_state_metadata
accounts
sqlite_sequence
contacts
raw_contacts
stream_items
stream_item_photos
photo_files
packages
mimetypes
data
phone_lookup
name_lookup
nickname_lookup
groups
agg_exceptions
settings
visible_contacts
default_directory
calls
voicemail_status
status_updates
properties
directories
dialer_search
data_usage_stat
v1_settings
sqlite_stat1
search_index
search_index_content
search_index_segments
search_index_segdir
search_index_docsize
search_index_stat
В таблице raw_contacts в поле display_name хранятся имена контактов (Ваня, Петя, Маша). Телефонные номера хранятся в phone_lookup.normalized_number.
Связать 2 таблицы мы можем по полю contact_id.
phone_lookup
raw_contact_id | normalized_number
1 | +375291111111
2 | +375332222222
raw_contacts
contact_id | display_name
1 | Ваня
2 | Петя
Напишем sql-запрос для получения контактов и телефонных номеров:
SELECT display_name,normalized_number FROM raw_contacts INNER JOIN phone_lookup ON phone_lookup.raw_contact_id = raw_contacts.contact_id;
display_name | normalized_number
Ваня | +375291111111
Петя | +375332222222
Результат запроса с контактами и номерами телефонов можно экспортировать в csv-файл.
Аналогичным способом можно получить все SMS из файла mmssms.db:
/data/data/com.android.providers.telephony/databases/mmssms.db
– anonymous 8 лет назад
– anonymous 9 лет назад