使用范围存储保存二进制文件

Saving binary files with scoped storage

我有一个应用程序,用户可以在其中选择和生成 bin 文件,用户必须可以轻松访问这些文件。

到目前为止,我一直要求用户在SD卡上创建一个文件夹,并将所有bin文件保存在该文件夹中,用户可以手动添加新文件,这些文件将显示在文件管理器中应用

我不知道如何使用 scooped storage 做这个,看起来我不能保存在默认目录中,因为这不容易被用户访问,最大的问题是这个文件夹被删除时该应用程序已删除。

这是一个很大的禁忌,即使删除了应用程序,也应该保留所有文件,否则,我的用户会非常生气,即使删除了应用程序,bin 文件对用户来说也非常重要。

我找到了解决方案,我知道已经晚了,但我希望这对其他人有帮助。

首先,你需要文件的URI,你可以通过选择一个带有Intent.ACTION_GET_CONTENT

的文件来获得这个

然后获取一个OutputStream

val p: ParcelFileDescriptor = contentResolver.openFileDescriptor(uri, "w") // w: write, r: read
val fos = BufferedOutputStream(FileOutputStream(p.fileDescriptor))