android - listFiles() 调用时出现 nullpointerException

标签 android kotlin android-studio-2.0

我正在调用 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/

相关文章:

java - 谷歌地图 v2 出错

android - Kotest(以前的 KotlinTest)在 Android Studio 中还能用吗?

android - 应用程序终止时,特定 View 不会在通知点击时打开

kotlin - 从 Double 到 Float 的类型转换会导致 ClassCastException

spring - 如何将spring kafka容器分配给特定分区并能够停止/启动它?

android - 升级到Android Studio 2.0后获取java.lang.VerifyError

android - Parse.com 拉取数组数据

Android 库、Kotlin 和 Dagger2

android - 从设备上卸载应用程序后,如何防止 Android Studio 2.0 执行完整的干净构建?

android - 尝试在 MultiDex 应用程序中测试 Android 模块,无法识别 com.android.test.runner.MultiDexTestRunner