今天换手机,想把原来旧手机中的电话本、短信等信息导出。
本来有很多工具可以使用的,但是这些工具都没法连接手机。
另外,手机端的同步助手之类的又安装不成功,提示“应用程序未安装”的错误。
最后发现只有adb命令行工具可以连接上,于是顺便实验了下用adb导出电话本、短信等信息。
1、先确定电话本、短信的存储位置(网上搜索就能找到,不同的android版本可能略有差异,使用adb shell查看):
电话本数据库路径:
/data/data/com.android.providers.contacts/databases
详细信息 ls -l:
-rw-rw—- app_3 app_3 5293056 2014-09-02 17:15 contacts2.db
短信、运营商、网络相关的数据库路径:
/data/data/com.android.providers.telephony/databases
详细信息 ls -l:
-rw-rw—- radio radio 4096 2014-09-02 17:15 telephony.db
-rw-rw—- radio radio 945152 2014-09-02 10:21 mmssms.db
-rw——- radio radio 4096 2013-05-26 20:47 optable.db
2、尝试把db文件整体导出
adb pull /data/data/com.android.providers.contacts/databases/contacts2.db .
failed to copy ‘/data/data/com.android.providers.contacts/databases/contacts2.db’ to ‘./contacts2.db’: Permission denied
由于权限是660的,直接adb pull不能导出
还好手机上安装了一个R.E.管理器,先将db文件复制到sdcard目录,再用adb pull上传到电脑上就可以了。
3、从db数据库文件中读取需要的内容并导出保存成便于查看的格式
下载数据库工具sqlite:
http://www.sqlite.org/
查看相关的帮助文档:
sqlite3.exe –help
sqlite> .help
在数据库中查看:
SQLite version 3.8.6 2014-08-15 11:46:33
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open contacts2.db
sqlite> .tables
_sync_state settings
_sync_state_metadata speed_dial
accounts status_updates
activities v1_settings
agg_exceptions view_contacts
android_metadata view_contacts_restricted
calls view_data
contact_entities_view view_data_restricted
contact_entities_view_restricted view_groups
contacts view_raw_contacts
data view_raw_contacts_restricted
groups view_v1_contact_methods
mimetypes view_v1_extensions
name_lookup view_v1_group_membership
nickname_lookup view_v1_groups
packages view_v1_organizations
phone_lookup view_v1_people
properties view_v1_phones
raw_contacts view_v1_photos
sqlite> .open mmssms.db
sqlite> .tables
addr pdu words
android_metadata pending_msgs words_content
attachments rate words_segdir
canonical_addresses raw words_segments
drm sms wpm
mychannels sr_pending
part threads
sqlite> .open telephony.db
sqlite> .tables
android_metadata carriers
sqlite> select * from carriers;
1|ctwap|460|03||46003|ctwap@mycdma.cn|vnet.mobi|2|10.0.0.200|80||||*|#777|Packet data bearer|1
2|ctnet|460|03||46003|ctnet@mycdma.cn|vnet.mobi|2||||||default,supl|#777|Packet data bearer|1
sqlite> select * from android_metadata;
zh_CN
sqlite> .open optable.db
sqlite> .tables
operator
sqlite> select * from operator;
sqlite>
导出成csv格式便于查看:
sqlite3.exe –csv mmssms.db "select * from sms" > sms.csv
sqlite3.exe –csv contacts2.db "select * from view_v1_people" > view_v1_people.csv
sqlite3.exe –csv contacts2.db "select * from view_v1_phones" > view_v1_phones.csv