无法进入系统的三星Android手机恢复联系人、短信数据并重置手机的过程

领导的一台双卡双待的Samsung Grand DUOS(i9082)联通合约手机前一阵子突然坏了,按开机键之后,显示Woo和三星商标,喊一句“欢迎进入Woo的世界”,就开始在Woo动画和三星动画之间循环,系统无法进入了!


手机没花钱,是充话费送的,但是里面的通讯录没有备份!将近两千个号码啊……虽然换了个小米继续顶着,但是领导一直就这个通讯录问题碎碎念……


于是昨天下定决心给她解决这个问题。


首先是确定一个原则,就是没有拿出数据之前,都不能刷机或者重置手机到初始状态,因为那都会把已有数据覆盖掉


我先尝试用数据线连接手机和Windows,在手机启动后,Windows上安装的腾讯应用宝识别出有安卓设备连接了。这是一个好消息!但是应用宝无法完成手机型号的识别和最终的连接,也就无法导出通讯录。


因为应用宝推荐了一个刷机精灵,抱着试试看的心态,安装了它,然后它也能连接手机,但无法识别型号,在手工选择型号后,也无法导出通讯录等数据。不过这个软件自带了ADB工具(用于通过命令行操作安卓系统),它也能很方便的将手机启动到Recover模式。当然我认为自己装一个ADB应该也可以。


那么就启动ADB命令行窗口,经过一系列的google和试验,通过下面的步骤可以将通讯录、短信和通话记录导出,当然你也可以用类似的步骤导出其它你想要的文件。


1. 拷贝通讯录、短信和通话记录数据库文件到存储卡

ADB pull命令可以把安卓系统里的文件下载到本地,但是对于系统文件,直接下载会报无权限错误(Permission Denied),那么我们需要先将系统文件拷贝到sdcard上,然后再下载。但由于安卓系统里把拷贝(cp)命令阉割了,所以必须用其它办法拷贝。有人说可以通过安装busybox来获得cp命令,但是经过测试,在三星这台机上是安装不上的。以下是ADB命令行过程,我们使用cat和重定向来实现拷贝:

> adb shell
shell@android:/ $ su
shell@android:/ # cd /data/data/com.android.providers.telephony/databases
shell@android:/data/data/com.android.providers.telephony/databases/ # cat mmssms.db > /sdcard/mmssms.db
shell@android:/data/data/com.android.providers.telephony/databases/ # cat telephony.db > /sdcard/telephony.db
shell@android:/data/data/com.android.providers.telephony/databases/ # cd /data/data/com.android.providers.contacts/databases
shell@android:/data/data/com.android.providers.contacts/databases/ # cat contacts2.db > /sdcard/contacts2.db
shell@android:/data/data/com.android.providers.contacts/databases/ # exit
shell@android:/ $ exit


2. 拷贝通讯录、短信和通话记录数据库文件到本地

> adb pull /sdcard/mmssms.db
2191 KB/s (163840 bytes in 0.073s)
> adb pull /sdcard/telephony.db
1798 KB/s (168930 bytes in 0.092s)
> adb pull /sdcard/contacts2.db
1809 KB/s (699790 bytes in 0.377s)

这样几个数据库文件就都备份出来了。可以用sqlite3命令行(请自行下载)或用Firefox的SQLite Manager来查看一下

> sqlite3 contacts2.db
SQLite version 3.7.13 2012-07-17 17:46:21
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
_sync_state                   status_updates              
_sync_state_metadata          stream_item_photos          
accounts                      stream_items                
agg_exceptions                v1_settings                 
android_metadata              view_contacts               
calls                         view_contacts_restricted    
contacts                      view_data                   
data                          view_data_restricted        
data_usage_stat               view_data_usage_stat        
default_directory             view_dialer_keypad_lookup   
dialer_keypad_lookup          view_entities               
directories                   view_entities_restricted    
emergency                     view_groups                 
groups                        view_raw_contacts           
mimetypes                     view_raw_contacts_restricted
name_lookup                   view_raw_entities           
nickname_lookup               view_raw_entities_restricted
packages                      view_stream_items           
phone_lookup                  view_stream_items_restricted
photo_files                   view_v1_contact_methods     
properties                    view_v1_extensions          
raw_contacts                  view_v1_group_membership    
search_index                  view_v1_groups              
search_index_content          view_v1_organizations       
search_index_docsize          view_v1_people              
search_index_segdir           view_v1_phones              
search_index_segments         view_v1_photos              
search_index_stat             visible_contacts            
settings                      voicemail_status            
speed_dial                  

sqlite> select * from contacts;
...................(内容略去)


3. 进入Recover模式并重置手机到出厂状态

可以用前面提到的刷机精灵,也可以先关机,然后同时按住音量上键、Home键和开关机键,这样都能进入Recover模式。

先后用音量键选择wipe data/factory和wipe cache,按开关机键确认,这样就擦除了所有数据并重置成出厂状态。

然后重启手机。


4. 导入备份的通讯录、短信和通话记录数据库文件到手机

将重置完成的手机开机后连上数据线到Windows,打开ADB命令行窗口,进入备份目录,然后使用ADB push命令将备份文件传送到sdcard上(此时sdcard已被重置,原来房子上面的数据都不再存在)

> adb push mmssms.db /sdcard/
> adb push telephony.db /sdcard/
> adb push contacts2.db /sdcard/
> adb shell
shell@android:/ $ su
shell@android:/ # cd /data/data/com.android.providers.telephony/databases
shell@android:/data/data/com.android.providers.telephony/databases/ # mv mmssms.db mmssms.db.orig
shell@android:/data/data/com.android.providers.telephony/databases/ # mv telephony.db telephony.db.orig
shell@android:/data/data/com.android.providers.telephony/databases/ # rm *.db-shm *.db-wal
shell@android:/data/data/com.android.providers.telephony/databases/ # cat /sdcard/mmssms.db > mmssms.db
shell@android:/data/data/com.android.providers.telephony/databases/ # cat /sdcard/telephony.db > telephony.db
shell@android:/data/data/com.android.providers.telephony/databases/ # cd /data/data/com.android.providers.contacts/databases
shell@android:/data/data/com.android.providers.contacts/databases/ # mv contacts2.db contacts2.db.orig
shell@android:/data/data/com.android.providers.contacts/databases/ # rm *.db-shm *.db-wal
shell@android:/data/data/com.android.providers.contacts/databases/ # cat /sdcard/contacts2.db > contacts2.db
shell@android:/data/data/com.android.providers.contacts/databases/ # exit
shell@android:/ $ exit

上面同样是用cat加重定向实现了cp功能,删除了原来的.db-shm文件和.db-wal文件,这两个文件在sqlite3访问数据库时会自动生成。

再重启一遍手机,打开通讯录,是不是都回来了?:)





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值