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);
By Default Android Stores its SQLite Database to this below link, where you can access your .db file by using shell from command prompt to get owner access using chmod for read or write permission.
String DATABASE_PATH = "/data/data/" + PACKAGE_NAME + "/databases/" + DATABASE_NAME;
Where:
String DATABASE_NAME = "your_dbname";
String PACKAGE_NAME = "com.example.your_app_name";
For more details you can check the following link. Click here
来源:https://stackoverflow.com/questions/15326455/what-is-the-default-database-location-of-an-android-app-for-an-unrooted-device