我有一个旧的 Android 应用程序,它的目标是 < API29. It still uses
< sdcard >/somefolder
来存储文件。 IE。在用户设备上运行的一些版本仍然使用他们在 API 33 下无法访问的目录。
显然,我需要迎合使用API33将应用程序升级到最新版本的用户。
在API33下,我什至无法读取旧应用文件夹中的所有文件;虽然我可以访问媒体文件。
理想情况下,我只想在应用程序启动时移动这些文件。
我目前能想到的唯一解决方案是让应用程序在没有旧文件的情况下启动,然后要求用户(使用
ACTION_OPEN_DOCUMENT_TREE
)授予对旧目录的访问权限(如果我能找到它),然后移动文件并重新启动应用程序。这真的是最好/唯一的方法吗???我希望有一个“隐形”的解决方案,(为清楚起见进行编辑:)并寻找一个低成本的解决方案,例如,我不想完全重新编码应用程序以在它使用 java.io.File
的任何地方使用 SAF(仍然在“可接受的”目录中工作)。
请注意: 这不是关于在 API33 中访问文件的推荐方式的问题,而是关于如何将现有的、已安装的、不再符合新规则的应用程序的数据迁移到新规则的问题。