问题描述
嘿,开发者们,
我在使用存储访问框架 (SAF) 将我们的应用迁移到新的 API 30 标准时遇到了问题。
我已成功迁移文件结构,现在正在使用内部 (FilesDir) 路径。
使用 MediaStore-Api 获取图像也非常有效。
在我们的应用中,我们将 API“Mapsforge”用于离线地图。
这个 API 使用了一个 Java.IO.File-Object,我们从一个“.map”文件的路径中获得,这个文件几乎有 2GB 大。
这个文件不是我们提供的,它是由客户管理并放在设备上供我们使用的文件,因为所有的“.Map”-文件都是自定义的。
由于 SAF 返回的是 Android.Net.Uri,我似乎无法在不复制文件内容的情况下将其转换为 Java.IO.File,从而在设备上使用更多存储空间。
有什么方法可以使用 SAF 来获取我可以在代码中使用的 Java.IO.File-Object?
如果不是,那么 Android 11 会让我的客户很难管理他的存储。
解决方法
这个 API 使用了一个 Java.IO.File-Object,我们从一个“.map”文件的路径中获得,这个文件几乎有 2GB 大。
幸运的是,Mapsforge 将来会提供更灵活的 API。您可能希望就他们的建议与他们联系。
有什么方法可以使用 SAF 来获取我可以在代码中使用的 Java.IO.File-Object?
没有。毕竟,用户可能会选择 Google Drive 或其他云存储提供商上的内容,而不是本地文件。或者,他们可能会选择您的应用无法访问的文件。或者,他们可能会选择存储在加密文件中的内容,该文件需要由文档提供者解密。等等。