Android Q: база данных SQLite в области хранения - PullRequest
13 голосов
/ 10 января 2020

В Android Q введена новая функция Объем хранения , которая гласит:

приложениям, предназначенным для Android 10 (уровень API 29) и выше, предоставляется доступ к области во внешнее хранилище или область хранения по умолчанию. Такие приложения имеют доступ только к каталогу приложения c, заданному приложением, на внешнем хранилище, а также к определенным c типам носителей, созданных приложением.

У меня есть приложение, которое создает SQLite база данных на внешнем хранилище, так что когда приложение удаляет базу данных, которая еще жива и может быть использована позже в качестве восстановления или использоваться вне устройства Android (скажем, в P C)

Как мне добиться того же эффект с Android Q? Точнее, если база данных хранится во внешнем каталоге publi c - как я могу прочитать эту базу данных, используя стандарт SQLiteOpenHelper?

1 Ответ

3 голосов
/ 17 января 2020

Вы можете попробовать использовать решение из документов:
https://developer.android.com/training/data-storage/compatibility

  • Цель Android 9 (уровень API 28) или ниже.
  • Если вы нацелены на Android 10 (уровень API 29) или выше, установите значение requestLegacyExternalStorage в true в файле манифеста вашего приложения:
<manifest ... >
    <!-- This attribute is "false" by default on apps targeting Android 10 or higher. -->
    <application android:requestLegacyExternalStorage="true" ... >
    ...
    </application>
</manifest>
...