我正在调用 listFiles() 并授予读写权限;在 Android 11 上,但即使路径正确(我从 ActivityResultContracts.OpenDocumentTree() Activity 获取路径)并像这样存储为变量,它也会给出 NullPointerException 错误 folderPath = it.path
var mydir = File(folderPath)
files = mydir.listFiles()!!
即使 mydir 正确打印,它仍然会导致 NullPointerException,例如:
/tree/primary:SHAREit Lite/图片
最佳答案
I got the path from a ActivityResultContracts.OpenDocumentTree() Activity
那么你就没有处理文件系统。您正在使用存储访问框架,它是围绕许多不同的可能存储内容的位置的抽象。但这意味着您需要停止使用 File
,因为内容可能不在文件系统上,并且 Uri
不是文件系统路径。
相反,请使用 DocumentFile.fromTreeUri()
在由您从 获取的
。您可以对其调用 Uri
标识的树上获取 DocumentFile
ActivityResultContracts.OpenDocumentTree()listFiles()
来获取表示该树的直接内容的 DocumentFile
对象。
关于android - listFiles() 调用时出现 nullpointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74256020/