我使用授予的读写权限调用listFiles();在Android11上,它给出了一个NullPointerException错误,即使路径是正确的(我从ActivityResultContracts.OpenDocumentTree()活动中获得了路径),并且存储为变量,如so folderPath = it.path
var mydir = File(folderPath)
files = mydir.listFiles()!!它的结果是NullPointerException仍然是正确打印的,例如:
/tree/primary:SHAREit Lite/pictures
发布于 2022-10-30 19:19:15
我从ActivityResultContracts.OpenDocumentTree()活动中获得了路径
那么,您将不处理文件系统。您正在使用存储访问框架(),它是围绕许多可能存储内容的不同位置的抽象。但这意味着您需要停止使用File,因为内容可能不在文件系统上,而且Uri不是文件系统路径。
相反,使用DocumentFile.fromTreeUri()在树上获得一个DocumentFile,该树由您从ActivityResultContracts.OpenDocumentTree()获得的Uri标识。您可以对此调用listFiles(),以获得表示该树的直接内容的DocumentFile对象。
https://stackoverflow.com/questions/74256020
复制相似问题