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.
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.
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);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With