我在授予读写权限的情况下调用listFiles((;在Android 11上,但即使路径正确,它也会出现NullPointerException错误(我从ActivityResultContracts.OpenDocumentTree((活动中获得路径(,并存储为类似folderPath = it.path
的变量
var mydir = File(folderPath)
files = mydir.listFiles()!!
即使mydir打印正确,它仍然会导致NullPointerException,例如:
/tree/primary:SHAREit Lite/pictures
我从ActivityResultContracts获得了路径。OpenDocumentTree((活动
那么您不是在处理文件系统。您使用的是存储访问框架,它是一个围绕许多不同的内容存储位置的抽象。但这意味着您需要停止使用File
,因为内容可能不在文件系统上,并且Uri
不是文件系统路径。
相反,使用DocumentFile.fromTreeUri()
在由从ActivityResultContracts.OpenDocumentTree()
获得的Uri
标识的树上获得DocumentFile
。您可以在上面调用listFiles()
来获取表示该树的直接内容的DocumentFile
对象。