在SD卡的根目录上创建一个SQLite备份

时间:2018-11-21 05:58:33

标签: android sqlite

如何将SQLiteDatabase而不是com.jti.mikee.jti_pos备份到SD卡的根上。因为我现在遇到的问题是当我卸载该应用程序时。 SD卡上的软件包名称已删除。甚至SQL备份。我正在设备android 4.4

上进行开发

这是我备份数据库的代码:

private void DBBackup() {
    try {
        File[] sd = getContext().getExternalFilesDirs(null);
        File data = Environment.getDataDirectory();

        if (sd[1].canWrite()) {
            String currentDBPath = "/data/com.jti.mikee.jti_pos/databases/" + DBHelper.DB_NAME;
            String backupDBPath =DBHelper.DB_NAME;
            File currentDB = new File(data, currentDBPath);
            File backupDB = new File(sd[1], 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 (Throwable e) {
        e.printStackTrace();
    }
}

2 个答案:

答案 0 :(得分:0)

getContext()。getExternalFilesDirs(null)返回SD卡上的某个位置,但仍属于该应用程序。

您应该使用Environment.getExternalStorageDirectory()。

答案 1 :(得分:0)

这应该返回内部存储[0]和外部存储[1]

File[] paths = ContextCompat.getExternalFilesDirs(getContext(), null);

或者...

File sdcard = Environment.getExternalStorageDirectory();
String path = sdcard.getAbsolutePath();

.getAbsolutePath()可能是这里的窍门-两种获取句柄的方法。