Android Q:作用域存储中的 SQLite 数据库

2022-09-03 02:54:50

在Android中,Q引入了新的作用域存储功能,该功能说:

默认情况下,面向 Android 10(API 级别 29)及更高版本的应用将获得对外部存储或作用域存储的作用域内访问权限。此类应用只能访问外部存储上特定于应用的目录,以及应用创建的特定类型的媒体。

我有我的应用程序在外部存储上创建SQLite数据库,这样当应用程序卸载数据库时,数据库仍然处于活动状态,并且可以在以后用作恢复或在Android设备之外使用(例如在PC中)

我应该如何达到与Android Q相同的效果?更准确地说,如果数据库存储在外部公共目录中 - 我如何使用标准读取此数据库?SQLiteOpenHelper


答案 1

您可以尝试使用文档中的解决方案:
https://developer.android.com/training/data-storage/compatibility

  • 定位 Android 9(API 级别 28)或更低版本。
  • 如果您定位到 Android 10(API 级别 29)或更高版本,请在应用的清单文件中将 的值设置为 ::requestLegacyExternalStoragetrue
<manifest ... >
    <!-- This attribute is "false" by default on apps targeting Android 10 or higher. -->
    <application android:requestLegacyExternalStorage="true" ... >
    ...
    </application>
</manifest>

答案 2

推荐