Android:硬件设备中的数据库sqlite文件在哪里?

时间:2014-09-15 07:06:21

标签: android

我想从我的SAMSUNG GALAXY TAB获取sqlite文件,但我不知道它在哪里?请帮我? 谢谢你。

3 个答案:

答案 0 :(得分:0)

如果你的意思是你访问/数据并且没有发现任何内容,并且你正在检查一个普通的Android硬件,这是预期的。 DDMS无权浏览/ data。

但是,至少如果您的应用程序是在调试模式下编译的,您可以使用控制台上的adb pull命令直接下载文件。

答案 1 :(得分:0)

看看这个:

Location of sqlite database on the device

你会在这里找到它: /数据/数据/你的应用中,软件包名/数据库/您的数据库名称

答案 2 :(得分:0)

如果您的设备为not rooted,则您无法访问data文件夹。然后你应该在sd card中编写数据库。在rooted设备或模拟器上,sqlite文件在

/data/data/packagename/databases/

表示没有root设备的写文件

private void writeToSD() throws IOException {
    File sd = Environment.getExternalStorageDirectory();

    if (sd.canWrite()) {
        String currentDBPath = DB_NAME;
        String backupDBPath = "backupname.db";
        File currentDB = new File(DB_PATH, 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();
        }
    }
}

其中DB_NAME是我的数据库的名称,DB_PATH的定义如下:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        DB_PATH = context.getFilesDir().getAbsolutePath().replace("files", "databases") + File.separator;
}
else {
        DB_PATH = context.getFilesDir().getPath() + context.getPackageName() + "/databases/";
}

在清单中添加以下权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

在SO How to check database on not rooted android device

中查看此问题