У меня есть 2 приложения A и B. A может загружать данные в базу данных sqlite, принадлежащую B. До сих пор я спрашивал пользователя о разрешении WRITE_EXTERNAL_STORAGE, и A мог напрямую записывать в базу данных B и, таким образом, использовать транзакции, чтобы избежать изменения база данных, если пользователь отменяет процесс.
При Android 10 прямой доступ к файлам больше не представляется возможным, поскольку мы вынуждены использовать этот ****** SAF ...
Чтобы по-прежнему работать, я обновил свои приложения для использования ContentProvider. Однако я больше не могу использовать транзакции для предоставления функции отмены: данные слишком тяжелы для размещения в памяти, я не могу использовать методы пакетной вставки ContentProvider (если я не ошибаюсь?).
Я застрял? Или есть решение предоставить прямой доступ к файлам между двумя приложениями, которыми я владею? В идеале он должен выглядеть следующим образом:
- 1 запрашивает у B доступ к файлу
- B предоставляет доступ
- A запускает транзакцию
- A файл загрузки 1
- файл загрузки 2
- [...]
- файл загрузки n
- A фиксирует транзакцию (или откаты по запросу пользователя) отменить)
- A уведомляет B, что загрузка завершена
- B отменяет доступ
Возможно ли это?
РЕДАКТИРОВАТЬ: Мне нужно доступ к объекту File для использования класса SqliteDatabaseOpenHelper, поэтому grantUriPermission мне не поможет.