Я искал это, но я не получил ответа. Я работаю над Бюджетным приложением и в нем есть два типа баз данных (Sqlite и Shared-preferences). Поскольку я могу BACKUP/RESTORE базы данных sqlite в sdcard, но я не знаю, как сделать резервную копию и восстановить базу данных общих настроек.Как восстановить Android Sharedpreferences из файла XML после создания резервной копии на SD-карте?
Я могу создать резервную базу данных общих настроек, но не знаю, как ее восстановить с SD-карты.
Базы данных имен: 1.magicbox_database.db является SQLite базы данных, 2.magicbox_database_sf.db является sharedpreferences база
Это код для резервного копирования как для базы данных.
if (isStoragePermissionGranted() == true) {
try {
File sd = Environment.getExternalStorageDirectory();
if (sd.canWrite()) {
String currentDBPath = "/data/data/" + getPackageName() + "/databases/OLBE_DEMO";
String backupDBPath = "magicbox_database.db";
File currentDB = new File(currentDBPath);
File backupDB = new File(sd, backupDBPath);
Toast.makeText(MainActivity.this, "backup creating....", Toast.LENGTH_SHORT).show();
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(MainActivity.this, "Bckup Created !", Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this, "magicbox_database.db in External Storage", Toast.LENGTH_SHORT).show();
}
String currentDBPath1 = "/data/data/" + getPackageName() + "/shared_prefs/DATABASE.xml";
String backupDBPath1 = "magicbox_database_sf.xml";
File currentDB1 = new File(currentDBPath1);
File backupDB1 = new File(sd, backupDBPath1);
// Toast.makeText(MainActivity.this, "backup creating....", Toast.LENGTH_SHORT).show();
if (currentDB1.exists()) {
FileChannel src1 = new FileInputStream(currentDB1).getChannel();
FileChannel dst1 = new FileOutputStream(backupDB1).getChannel();
dst1.transferFrom(src1, 0, src1.size());
src1.close();
dst1.close();
//Toast.makeText(MainActivity.this, "Bckup Created !", Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this, "magicbox_database_sf.db in External Storage", Toast.LENGTH_SHORT).show();
}
}
} catch (Exception e) {
Toast.makeText(MainActivity.this, "ERROR! backup not created", Toast.LENGTH_SHORT).show();
}
}
Этот код для восстановления обоих
if (isStoragePermissionGranted() == true) {
try {
File sd = Environment.getExternalStorageDirectory();
if (sd.canWrite()) {
String currentDBPath = "/data/data/" + getPackageName() + "/databases/OLBE_DEMO";
String backupDBPath = "magicbox_database.db";
File currentDB = new File(currentDBPath);
File backupDB = new File(sd, backupDBPath);
Toast.makeText(MainActivity.this, "restoring......", Toast.LENGTH_SHORT).show();
if (currentDB.exists()) {
FileChannel src = new FileInputStream(backupDB).getChannel();
FileChannel dst = new FileOutputStream(currentDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
Toast.makeText(MainActivity.this, "Your data Restored !", Toast.LENGTH_SHORT).show();
}
String currentDBPath1 = "/data/data/" + getPackageName() + "/shared_prefs/DATABASE.xml";
String backupDBPath1 = "magicbox_database_sf.xml";
File currentDB1 = new File(currentDBPath1);
File backupDB1 = new File(sd, backupDBPath1);
if (currentDB1.exists()) {
FileChannel src1 = new FileInputStream(backupDB1).getChannel();
FileChannel dst1 = new FileOutputStream(currentDB1).getChannel();
dst1.transferFrom(src1, 0, src1.size());
src1.close();
dst1.close();
Toast.makeText(MainActivity.this, "magicbox_database_sf.db in External Storage", Toast.LENGTH_SHORT).show();
}
}
} catch (Exception e) {
Toast.makeText(MainActivity.this, "ERROR! data not restored", Toast.LENGTH_SHORT).show();
}
}
изменения в этом коде
FileChannel src1 = new FileInputStream(backupDB1).getChannel();
FileChannel dst1 = new FileOutputStream(currentDB1).getChannel();
magicbox_database_sf.db - база данных sharedpreferences - что это за м ean? – shadygoneinsane
Shared Pref - это пары ключевых значений !!! – shadygoneinsane
@shadygoneinsane magic_database_sf.db - это имя базы данных, которую я сохраняю в SDCARD –