ContentResolver.openAssetFileDescriptor() 在 Android 12 中需要很长时间

2023-12-04

在 Android 12 中,此方法调用需要几秒钟才能返回:

val descriptor = contentResolver.openAssetFileDescriptor(rootUri, "r")

我向它传递一个树 Uri,它代表 USB 驱动器的根。该调用需要更长的时间,具体取决于根上占用的空间量。所以对于 1GB 来说,大约需要 10 秒。在以前的 Android 版本中,情况并非如此,调用只需几毫秒即可返回。

我的目标是使用下面的代码测量 USB 驱动器上的空间。我还能做些什么来在合理的时间内完成这项工作吗?

val descriptor = contentResolver.openAssetFileDescriptor(rootUri, "r")
val stats = Os.fstatvfs(descriptor!!.fileDescriptor)
val availableSpace = stats.f_bavail * stats.f_bsize

相关链接

Google 问题跟踪器链接与示例项目


对于 Android 12,您可以请求原始文件访问权限。 (忘记权限的正确名称)

当您执行所有文件操作时都会经过媒体存储。

值得一试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ContentResolver.openAssetFileDescriptor() 在 Android 12 中需要很长时间 的相关文章