问题
I almost feel embarrased asking this but I really can't find my app on my phone. I read that the app should be installed in /data/data/ folder but my /data folder appears to be empty when viewed in Astro. My app is most definitely installed on the phone, should I transfer it to the SD for it to become visible? I have an unrooted HTC Desire HD on Orange UK. I just need to have a peek at the SQLite database managed by my App.
回答1:
I almost feel embarrased asking this but I really can't find my app on my phone.
Look for it in Settings > Applications to see if it is installed. If it is, any activities you declared in the LAUNCHER
category (action MAIN
) will appear in the home screen launcher.
I read that the app should be installed in /data/data/ folder but my /data folder appears to be empty when viewed in Astro.
You do not have permissions to view that directory on an un-rooted phone.
My app is most definitely installed on the phone, should I transfer it to the SD for it to become visible?
Your app will not be any more "visible".
I just need to have a peek at the SQLite database managed by my App.
Add a backup/restore feature to your app that copies your SQLite file to/from external storage. Be sure all your SQLiteDatabase
objects are closed first, though.
回答2:
Simple answer would be,
- If you need to browse the "Data" directory in actual phone, it should be a rooted device.
- You can simply browse "Data" directory in simulators, because, Simulator act as a rooted device and it has all the super user access.
Happy coding!!!
Update
There is another way by copying database to your SD card from below function,
public void exportDatabse(String databaseName) {
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath = "//data//"+getPackageName()+"//databases//"+databaseName+"";
String backupDBPath = "backupname.db";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);
if (currentDB.exists()) {
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
}
}
} catch (Exception e) {
}
}
回答3:
root is not necessary if your application is debuggable (android:debuggable="true"
) see How can I see the contents of a sqlite db of my app in a real device?
来源:https://stackoverflow.com/questions/4838777/where-is-my-app-data-appears-empty