Search code examples
androidandroid-emulatorandroid-sqliteadb

How to access data/data folder in Android device?


I am developing an app and I know my database *.db will appear in data/data/com.****.***

I can access this file from AVD in Eclipse with help of sqlite manager

But I can't access this file in my Android phone.
I googled it and it says I need to root my phone to do it, but I don't want to do that.

How can I access my data/data/..... directory in my Android phone "without rooting it"?

Can I change user permissions for the directory data/data..... without rooting it?


Solution

  • Accessing the files directly on your phone is difficult, but you may be able to copy them to your computer where you can do anything you want with it. Without rooting you have 2 options:

    1. If the application is debuggable you can use the run-as command in adb shell

       adb shell
       run-as com.your.packagename 
       cp /data/data/com.your.packagename/
      
    2. Alternatively you can use Android's backup function.

       adb backup -noapk com.your.packagename
      

      You will now be prompted to 'unlock your device and confirm the backup operation'. It's best NOT to provide a password, otherwise it becomes more difficult to read the data. Just click on 'backup my data'. The resulting 'backup.ab' file on your computer contains all application data in android backup format. Basically it's a compressed tar file.

    This page explains how you can use OpenSSL's zlib command to uncompress it:

    dd if=mybackup.ab bs=24 skip=1|openssl zlib -d > mybackup.tar
    

    If the openssl zlib command does not work on your system, there are other options.

    You can use the adb restore backup.db command to restore the backup.