Я добавил опцию в своем приложении, где пользователь может сделать резервную копию приложения на Google Drive.
Я получаю ссылку на базу данных, например:
File dbFile = new File(context.getDatabasePath(DATABASE_NAME).getAbsolutePath());
Когда я регистрирую вышеупомянутое, чтобы получить путь, это возвращается - /data/user/0/my.package.name/databases/DatabaseName.DB
Затем я создаю копию своей базы данных и загружаю ее в Google Drive.
Это работает хорошо.
Теперь, на другом устройстве, я загружаю базу данных в каталог моего приложения. После сохранения я перемещаю / заменяю старую базу данных, выполняя следующие действия:
try {
//The database is stored here from Google Drive
File directoryFile = context.getExternalFilesDir("BackupDB");
InputStream mInput = new FileInputStream(directoryFile+"/DatabaseName.DB");
//Path to current database - /data/user/0/my.package.name/databases/DatabaseName.DB
String outFileName = context.getDatabasePath(DATABASE_NAME).getAbsolutePath();
OutputStream mOutput = new FileOutputStream(outFileName);
byte[] mBuffer = new byte[1024];
int mLength;
while ((mLength = mInput.read(mBuffer))>0){
mOutput.write(mBuffer, 0, mLength);
}
mOutput.flush();
mOutput.close();
mInput.close();
} catch (Exception e) {
e.printStackTrace();
}
Вышеописанное прекрасно работает на моем устройстве.
Я видел, как некоторые люди говорили что /data/data/
могут быть доступны только для корневых устройств, но я также видел, как многие люди говорят, что мы можем переопределить базу данных нашего приложения.
Мой вопрос:
Безопасно ли для меня обращаться к базе данных приложения и переопределять ее во всех android версиях? Или есть ограничения?