Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the default database location of an android app for an unrooted device?? Is it same as for rooted one?

I have quite a specific question.

First let me explain what I am trying to do and then the problem.

Basically what I am trying to do is to store an existing .db database file in assets folder and then after installation I want to copy the .db file from assets to the default database location in Android. Something similar to this page answer [link]How to use an existing database with an Android application.

Problem For unrooted device I cannot access /data/data/<<package name folder>> . In this case where is the database file gets stored. In other term I want to copy a file from assets to applications default location for database which is DB_PATH = "/data/data/" + context.getPackageName() + "/databases/" in case of a rooted device. Would it be the same for the unrooted device.

like image 667
user2129794 Avatar asked Mar 10 '13 19:03

user2129794


2 Answers

Yeah, For both the cases it will be same path. /data/data/<application_package_name>/databases

Now, on un-rooted device you can not access /data/ directory of device's internal storage. That's why you can not seen the database file.

If you want to get the file you can copy database file from internal storage /data/data/<application_package_name>/databases to external storage (sdcard) then using ddms or adb pull get the database file.

Also just try command adb pull /data/data/<application_package_name>/databases/<database_file_name> from your system to get the database file.

But by default all the android application store database on internal storage path /data/data/<application_package_name>/databases. And its applicable for all devices rooted or un-rooted.

like image 155
user370305 Avatar answered Nov 20 '22 11:11

user370305


According to Android docs at http://developer.android.com/reference/android/content/Context.html#getDatabasePath(java.lang.String) you should use context.getDatabasePath.

Works for me:

File dbFile = context.getDatabasePath(name_of_database_file);
like image 8
cja Avatar answered Nov 20 '22 11:11

cja