所以我看到了很多将SQLite数据库文件备份到SD卡的例子,我已经让它在开发中的android模拟器上成功运行,但它在手机本身没有按预期工作。这是我不明白的奇怪部分。备份文件确实会在SD卡上创建文件,但是并非应用程序使用的SQLite数据库中存在的所有数据都包含在备份的文件中。还有其他人遇到过这个问题吗?下面是我用来备份文件的代码。 DB_PATH常量包含/ data / data / [包名称] / databases /的值。对此的任何帮助将不胜感激。
try
{
File dbFile = new File(DataBaseHelper.DB_PATH
+ DataBaseHelper.DB_NAME);
File exportDir = new File(Environment.getExternalStorageDirectory()
+ DB_BACKUP_PATH);
if (!exportDir.exists()) {
exportDir.mkdirs();
}
File file = new File(exportDir, dbFile.getName());
file.createNewFile();
FileUtil.copyFile(dbFile, file);
return true;
} catch (IOException e) {
BusinessLogic.errorHandler(e, ManageDataActivity.this);
return false;
}
catch(Exception e) {
BusinessLogic.errorHandler(e, ManageDataActivity.this);
return false;
}
答案 0 :(得分:0)
如果没有root权限,则无法访问数据库文件。这解释了你所看到的行为。
我会在SD卡上创建一个新数据库,然后尝试从旧数据库中复制所有数据,而不是复制文件本身。