Search code examples
androidkotlinandroid-studio-2.0

listFiles() nullpointerexception when called


I'm calling listFiles() with read and write permissions granted; on Android 11 but it gives a NullPointerException error even tho the path is correct (I got the path from a ActivityResultContracts.OpenDocumentTree() Activity) and stored as variable like so folderPath = it.path

var mydir = File(folderPath)
files = mydir.listFiles()!!

it results in NullPointerException still even tho mydir is printed correctly, example:

/tree/primary:SHAREit Lite/pictures


Solution

  • I got the path from a ActivityResultContracts.OpenDocumentTree() Activity

    Then you are not dealing with the filesystem. You are using the Storage Access Framework, which is an abstraction around a lot of different possible places for content to be stored. But this means that you need to stop using File, because the content may not be on the filesystem, and a Uri is not a filesystem path.

    Instead, use DocumentFile.fromTreeUri() to get a DocumentFile on the tree identified by the Uri that you got from ActivityResultContracts.OpenDocumentTree(). You can call listFiles() on that to get DocumentFile objects representing the direct contents of that tree.