首页 > 解决方案 > getStorageDirectory 的子列表在 Android 11 上始终返回 null

问题描述

我想/storage通过targetSdk=30应用程序获取目录的子列表。因此,我设置android.permission.MANAGE_EXTERNAL_STORAGE了权限AndroidManifest.xml并创建了此代码。
(我不打算分发这个应用程序,所以授予这个权限没有问题。)

<manifest>
    ...
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission
        android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
        tools:ignore="ScopedStorage" />
    ...
</manifest>
Environment.getStorageDirectory().list() // return null

但是,作为代码中的注释,此代码将始终返回 null...

你能帮我么?

(我英语不好,所以要通过翻译服务。如果不清楚,请见谅。)

标签: androidpermissionsandroid-11

解决方案


从您的代码中删除 tools:ignore="ScopedStorage" 这一行并检查范围存储的权限。

您需要完全访问存储,因此需要为 android 11 或更高版本的设备获取范围存储。


推荐阅读