数据库备份可在android 4.4.2上运行,但在9

时间:2019-09-30 05:52:11

标签: java android

我正在使用此功能将数据库文件存储为备份文件:

private void saveDATABASE() {
    try {
        File sd = Environment.getExternalStorageDirectory();
        File data = Environment.getDataDirectory();

        if (sd.canWrite()) {
            String currentDBPath = "//data//app.myapp.com.myapplication//databases//" + Database.DATABASE_NAME;
            String backupDBPath = "backup_" + String.valueOf(System.currentTimeMillis()) + ".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();
                Toast.makeText(getActivity(), "OK", Toast.LENGTH_LONG).show();
            } else {
                Toast.makeText(getActivity(), "WARNING", Toast.LENGTH_LONG).show();
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
        Toast.makeText(getActivity(), "ERROR", Toast.LENGTH_LONG).show();
    }
}

在android 4.4.2上,它可以成功工作(数据库文件将与所有保存的数据一起创建)。但是在android 9上它只能部分工作-创建了数据库文件,但它不包含该文件中的最新数据库数据(例如,该文件中缺少一些最新条目,但它们在我的应用程序中-看起来像已备份文件是数据库的旧版本)。请为新版本的android将此代码进行任何改进吗?预先感谢

0 个答案:

没有答案
相关问题