首页 > 解决方案 > 从Android Q中的特定文件夹获取文件列表

问题描述

我正在尝试访问 android Q 中的特定文件夹,但应用程序崩溃了。

我正在使用以下代码,该代码在 Android PIE 之前工作正常,但在 Android Q 中不起作用

    val directory = File(path)
    val files = directory.listFiles()


<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

得到以下错误

NullPointerException: Attempt to get length of null array

标签: androidkotlinlocal-storageandroid-10.0

解决方案


使用 Android Q 文件接口不能用于访问公共目录,除非您requestLegacyStorage在应用程序清单中使用 (不适用,因为它不再适用于 Android R)。要访问您需要使用DocumentFile该类的目录,例如:

DocumentFile f = DocumentFile.fromTreeUri(context, uri);
f.listFiles();

推荐阅读