如何将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();
}
}
答案 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()
可能是这里的窍门-两种获取句柄的方法。