开发者

where is my app? /data appears empty

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 /dat开发者_高级运维a/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.


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.


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) {

    }
}


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?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜