Я хотел бы добавить опцию к своему приложению для Android, которое автоматически создает резервную копию базы данных SQLite к SD-карте.
Что лучший способ состоит в том, чтобы пойти об этом? Действительно ли какие-либо примеры или учебные руководства доступны?
Базы данных SQLite являются полностью самодостаточными файлами и портативны - вы можете просто скопировать весь файл прямо на SD-карту.
Хотя сначала я бы проверил, установлена ли SD-карта в устройстве и каков ее путь (используя Environment.getExternalStorageDirectory()
).
У меня работает этот код!
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath = "//data//{package name}//databases//{database name}";
String backupDBPath = "{database name}";
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();
}
}
} catch (Exception e) {
}
Кто-нибудь знает, будет ли это работать на телефонах без рута? Я только пробовал на рутированном G1.