在不root手机的情况下读取Data目录下的文件


如果直接使用adb命令会产生以下错误:
[plain]  view plain  copy
  1. 127|shell@android:/ $ cd /data  
  2. cd /data  
  3. shell@android:/data $ ls  
  4. ls  
  5. opendir failed, Permission denied  
你是没有权限的。

正确使用adb读取data目录下的文件方式

[plain]  view plain  copy
  1. shell@android:/data $ run-as com.your.package  
  2. run-as com.your.package  
  3. shell@android:/data/data/com.your.package $ cd /data/data/com.your.package  
  4. cd /data/data/com.your.package  
  5. shell@android:/data/data/com.your.package $ ls  
  6. ls  
  7. cache  
  8. databases  
  9. lib  
  10. shared_prefs  
  11. shell@android:/data/data/com.your.package $ cd databases  
  12. cd databases  
  13. shell@android:/data/data/com.your.package/databases $ ls  
  14. yourpackagename.db  
  15. $ cat preferences.db > /mnt/sdcard/yourpackagename.db     
将你要访问的package目录下的db文件拷贝到sdcard中,这样就可以正常访问了!

参考资料

Read Android Data Folder Without Rooting

对文件进行增删
法1:
adb shell "run-as package.name chmod 666 /data/data/package.name/databases/file"
adb pull /data/data/package.name/databases/file .
adb shell "run-as package.name chmod 600 /data/data/package.name/databases/file"

UPDATE

the command for Android 5.0+ to save /data/data/package.name/databases/file would be:

adb exec-out run-as package.name cat databases/file > file

法2:
> adb shell
shell $ run-as com.example.package
shell $ chmod 666 databases/file
shell $ exit                                               ## exit out of 'run-as'
shell $ cp /data/data/package.name/databases/file /sdcard/
shell $ run-as com.example.package
shell $ chmod 600 databases/file
> adb pull /sdcard/file .


你可能感兴趣的:(Android)