Как восстановить базу данных приложения. (Flutter с SQLite)

Мне нужно разработать функциональность по восстановлению базы данных с помощью файла резервной копии, чтобы пользователь мог восстановить данные после переустановки приложения.

Я разрабатываю приложение для Android с использованием Flutter и собственной базы данных устройства SQLite с lib moor_flutter. Я разработал функцию, позволяющую пользователю создавать резервную копию базы данных, а другую - восстанавливать базу данных из этого файла резервной копии.

Проблема в том, что на некоторых устройствах не работает функция восстановления.

не работало: Motorola one zoom / с android 9, redminote 7 / с android 9, redminote 8 / с android 9.

он работал на: Samsung Galaxy S9 / с Android 9, Moto G4, Redmi 4x / с Android 7.1.

После использования обеих функций для создания или резервного копирования и восстановления.

  Future<void> backup() async {
    final dbFolder = await getDatabasesPath();
    final dbLocation = p.join(dbFolder, 'dbnew.sqlite');

    final File file = File(dbLocation);
    await ShareExtend.share(file.path, "file");
  }


  Future<void> restore() async {

    final dbFolder = await getDatabasesPath();
    final dbLocation = p.join(dbFolder, 'dbnew.sqlite');
    AppDatabase.instance.close(); 

    //acess file backup
    File file = await FilePicker.getFile(type: FileType.ANY);
    Uint8List updatedContent = await File(file.path).readAsBytes();
    File(dbLocation).writeAsBytes(updatedContent);
  }

Разрешения в AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>

0 ответов

Другие вопросы по тегам