单元测试 SAF 文件/目录操作

问题描述

我正在尝试为利用 DocumentFile 实例进行文件/目录操作的 Android 代码实施单元测试。通常可以通过使用 ACTION_OPEN_DOCUMENT_TREE 选择一个位置来启动这些测试,但我无法获得 DocumentFile 的实例作为此类单元测试的一部分(无需用户交互)。

如果我能够将应用程序私有存储中的位置转换为 DocumentFile,这对于我的用例来说就足够了,但是将目录的 file:// URI 转换为 DocumentFile似乎不可能。

解决方法

DocumentFile.fromFile() 的文档不太清楚,但它适用于文件和目录。与 Uri 值相反 - 您需要调用 fromSingleUri()fromTreeUri() 来区分文档和树 - fromFile() 可以自行解决。