我想在 Google Play 上更新一个应用程序,并且我认为该应用程序必须针对 API 级别 30 才能进行更新。
该应用程序读取和写入文档,这些文档实际上是 SQLiteDatabase 实例。这些文档存储在 SD 卡或内部存储器中。
该应用程序的当前版本:https ://github.com/EricTerrell/Vault3.Android
目前,该应用针对 API 级别 29 并依赖于 requestLegacyExternalStorage="true" 设置。此外,它断言 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 权限:
https://github.com/EricTerrell/Vault3.Android/blob/main/app/src/main/AndroidManifest.xml#L7-L16
我尝试使用 ACTION_OPEN_DOCUMENT_TREE 和 ACTION_OPEN_DOCUMENT UI 来指定文档的文件夹,并打开给定的文档。
我的问题是这些 UI 返回 Uri,而不是文件路径。我不知道应用程序是否可以使用文件 Uri 而不是路径打开 SQLiteDatabase 数据库。
我阅读了几篇关于如何将 Uri 转换为文件路径的文章。我没有找到任何结论性的东西。谷歌似乎正试图保持文件 Uris 不透明。
此外,给定文件 Uri,我没有找到打开 SQLiteDatabase 的方法:
https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase?hl=en
文档是由桌面应用程序以及Android移动应用程序读取和写入的,因此文件格式确实无法更改。
任何建议都是最受欢迎的!如果有一种方法可以在给定文件 Uri 的情况下打开 SQLiteDatabases,那将解决我的问题。
埃里克·伯格曼-特雷尔