Android Marshmallow 上的应用包含预填充的 sqlite 数据库时出现权限问题

Permission trouble when including pre-populated sqlite database with app on Android Marshmallow

我正在尝试在我的应用程序中包含一个预填充的 sqlite 数据库。我已将它放在 main/assets/dbname.db 并将其复制到我的自定义 Application 子类的 onCreate() 中。

它适用于较低版本的 Android。但是在 Marshmallow 上,我遇到了权限障碍。除非我在 activity 中,否则我无法请求存储写入权限。所以我将数据库复制部分移到了第一个启动的 activity 中,在 activity 的 onCreate() 中。但出于某种原因,在我授予权限后,我的应用程序立即关闭。我必须重新启动它才能工作。

我一直在寻找有关如何为 Android Marshmallow 提供预填充数据库的最佳实践,但没有取得太大的成功。有什么想法吗?

我最终使用了这个插件 Android SQLite Asset Helper,它似乎没有任何问题。