Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android Device manager : "transfer error: Permission denied"

Tags:

android

I am trying to pull my applications databases files, I can see that I have all the permissions in the database file "-rwxrwxrwx", which I provided by chmod -r 777 /data/data/com.example.myapp, but I am not able to, I constantly get the above error when I try to pull it and moreover the device manager keeps crashing.

The error that I get:

[2015-07-19 19:48:44 - ddms] transfer error: Permission denied

[2015-07-19 19:48:44] Failed to pull selection: Permission denied

I am using Android Studio, my device has root access and I am on a mac.

This is what I am trying to pull:

enter image description here

Edit: When I run the following command I get this error Package 'com.example.hackbot' has corrupt installation :

run-as com.example.hackbot chmod /data/data/com.example.hackbot/databases/HackBotDB

Any help is valuable.

Cheers

like image 700
rd22 Avatar asked Jul 19 '15 14:07

rd22


2 Answers

this is easy to do:

  1. plug in your device, and run adb shell from command line or terminal
  2. Once in the shell run-as com.myapplication.packagname
  3. then cd into the databases folder cd databases
  4. Then run cat my_datbase_name.db > /sdcard/my_database_name_temp.db
  5. run exit and then exit again to get back to the normal terminal prompt
  6. run adb pull /sdcard/my_database_name_temp.db and that should be it

You can donwload sqlitebrowser to view this data

like image 88
kandroidj Avatar answered Sep 27 '22 16:09

kandroidj


The adb shell linux user and your app linux user are different. So, for security reason, you can't get private app data from adb, but you can make a copy as you did. I agree, it's messy and unclean but it's been designed that way. So my suggestion is to add Stetho to your app. You can monitor your DB from Chrome, as well as getting other debug infos.

like image 34
Mimmo Grottoli Avatar answered Sep 27 '22 17:09

Mimmo Grottoli