1

嘿那里的开发人员,

在使用存储访问框架 (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 让我的客户很难管理他的存储。

4

1 回答 1

0

这个 API 使用了一个 Java.IO.File-Object,我们从一个“.map”文件的路径中获得,这个文件几乎有 2GB 大。

幸运的是,Mapsforge 将来会提供更灵活的 API。您可能希望就他们的建议与他们联系。

有什么方法可以使用 SAF 来获取我可以在代码中使用的 Java.IO.File-Object 吗?

不会。毕竟,用户可能会选择 Google Drive 或其他云存储提供商上的内容,而不是本地文件。或者,他们可能会选择您的应用无法访问的文件。或者,他们可能会选择存储在加密文件中的内容,该文件需要由文档提供者解密。等等。

于 2021-03-14T11:48:47.330 回答