Как открыть SQLite базу из внешнего файла в Android Kotlin

Вводная: есть приложение на Android использующее внутреннюю SQLite базу под управлением Room, есть аналогичное приложение на Deskotop с такой же базой.

Цель: синхронизировать базы.

Предполагаемый способ: положить файл настольной базы в папку (допустим Download/Documents) на мобильном. Открыть этот файл из Android приложение и провести необходимые операции по сравнению содержимого с базой на Android и их синхронизацией.

Проблема: не могу найти способа просто открыть и прочитать случайную базу из внешнего файла.


Ответы (1 шт):

Автор решения: Barmaley

Открытие БД SQLite из внешнего каталога явно запрещено начиная с API-29 (по-моему).

Был в свое время костыль, который типа разрешал открывать БД не из каталога юзера. Флажок в манифесте:

<application
    ...
    android:requestLegacyExternalStorage="true">

Не знаю как сейчас, но думаю, что костыль уже умер.

Единственный способ, это организовать ручную синхронизацию между БД во внутреннем и внешнем каталогах - задача, как говорится, со "звездочкой". Хотя... вроде не бином Ньютона проверять lastModified и копировать туда/сюда файлы.

→ Ссылка