¿Es posible hacer una copia de seguridad y RESTAURAR un archivo de base de datos en Android? dispositivos no root

en mi aplicación necesito obtener una copia de seguridad de mi base de datos, pero después necesitaré restaurarla de nuevo,

He leído algunas cosas, pero no estoy seguro de si esto es necesario para tener un dispositivo rooteado, necesito hacer una copia de seguridad / restaurar todos los datos en dispositivos no root, ¿es posible?

mi primera idea fue crear un archivo txt para escribir la selección, y luego insertarlo de nuevo.

pero creo que esto es mucho “problema”, entonces no sé si es posible copiar la base de datos y pegarla en la tarjeta SD para hacer una copia de seguridad y copiar desde la tarjeta SD y pegarla en la ruta de la base de datos para restaurar dispositivos no root.

Aquí hay un código para que funcione

private void importDB() { try { File sd = Environment.getExternalStorageDirectory(); File data = Environment.getDataDirectory(); if (sd.canWrite()) { String currentDBPath = "//data//" + "" + "//databases//" + ""; String backupDBPath = ""; // From SD directory. File backupDB = new File(data, currentDBPath); File currentDB = new File(sd, backupDBPath); FileChannel src = new FileInputStream(backupDB).getChannel(); FileChannel dst = new FileOutputStream(currentDB).getChannel(); dst.transferFrom(src, 0, src.size()); src.close(); dst.close(); Toast.makeText(getApplicationContext(), "Import Successful!", Toast.LENGTH_SHORT).show(); } } catch (Exception e) { Toast.makeText(getApplicationContext(), "Import Failed!", Toast.LENGTH_SHORT) .show(); } } private void exportDB() { try { File sd = Environment.getExternalStorageDirectory(); File data = Environment.getDataDirectory(); if (sd.canWrite()) { String currentDBPath = "//data//" + "" + "//databases//" + ""; String backupDBPath = ""; File currentDB = new File(data, currentDBPath); File backupDB = new File(sd, backupDBPath); FileChannel src = new FileInputStream(currentDB).getChannel(); FileChannel dst = new FileOutputStream(backupDB).getChannel(); dst.transferFrom(src, 0, src.size()); src.close(); dst.close(); Toast.makeText(getApplicationContext(), "Backup Successful!", Toast.LENGTH_SHORT).show(); } } catch (Exception e) { Toast.makeText(getApplicationContext(), "Backup Failed!", Toast.LENGTH_SHORT) .show(); } }