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

问题描述 投票:13回答:1

在Android Q中引入了新的Scoped storage功能,它表示:

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

我有我的应用程序在外部存储上创建SQLite数据库,这样当应用程序卸载数据库时,该数据库仍然有效,以后可以用作恢复操作,也可以在Android设备之外使用(例如在PC中使用)

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

java android sqlite kotlin android-sqlite
1个回答
3
投票

您可以尝试使用文档中的解决方案: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>
© www.soinside.com 2019 - 2024. All rights reserved.