Reputation: 333
I am trying to get a list of the databases that my Android SQLite program is working with. If I understand correctly, the databases are in:
data/data/[packagename]/databases
the databases are created using:
SQLiteDatabase.execSQL(DATABASE_CREATE);
And then I try to get a list using:
String[] instrumentFileList = MainActivity.this.fileList();
However, this returns a null array. I know the SQL database is being created because other parts of my app are able to access it. Is this failure to get a list because my phone is not rooted?
Also, is there a way to get a list of files in that directory using adb?
Any help is greatly appreciated.
Upvotes: 0
Views: 689
Reputation: 12167
How is the implementation of your method fileList()? Every database is stored in a separated file under /data/data/[packagename]/databases, usually the database name will suffix with ".db", you could achieve this by just list this directory.
if (getDatabasePath(DBNAME) != null) {
for (File f : getDatabasePath(DBNAME).getParentFile().listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if (pathname.getName().matches("^.*\\.db$")) {
return true;
}
return false;
}
})) {
Log.d(TAG, f.getAbsolutePath());
}
}
If you want to list the database file from adb, you can do like that
adb shell ls /data/data/[youpackagename]/databases/*.db
In some situation, it might not work because of permission restriction, however you can set the database directory permission to world readable in you application.
Upvotes: 1