【发布时间】:2020-04-28 03:43:53
【问题描述】:
在 Android Q 中引入了新的Scoped storage 功能,它表示:
默认情况下,面向 Android 10(API 级别 29)及更高版本的应用会获得对外部存储或范围存储的范围访问权限。此类应用只能访问外部存储上特定于应用的目录,以及应用创建的特定类型的媒体。
我的应用程序在外部存储上创建 SQLite 数据库,这样当应用程序卸载时数据库仍然存在,以后可以用作恢复或在 Android 设备之外使用(比如说在 PC 中)
我应该如何使用 Android Q 实现相同的效果?更准确地说,如果数据库存储在外部公共目录中 - 我如何使用标准 SQLiteOpenHelper 读取此数据库?
【问题讨论】:
-
你不能,至少不能使用 SQLite 框架或支持 SQLite AndroidX API(Room 使用的那个)。我不能排除使用自定义编译的 SQLite 库和文件描述符的一些晦涩的解决方案。
-
不,不。呜呜呜呜!我不敢相信,必须有一种方法可以使用放在公共目录中的 SQLite 数据库......
-
在启动和关闭您的应用程序时,您可以制作数据库文件的副本。使用媒体存储不需要任何权限。
-
@blackapps,当然我理解这个选项,虽然我也很高兴有其他方法:直接访问外部存储上的 SQLite 数据库
-
AutoBackup 可用于数据库文件恢复。
标签: java android sqlite kotlin android-sqlite