无法打开 android 的根文件夹

Unable to open android's root folder

我想制作一个资源管理器应用程序。举个粗略的例子,我有一个简单的文件管理器应用程序,它显示了我的 phone 的文件系统:

当我通过 USB 插入 phone 时,我从计算机的文件资源管理器中得到了相同的结果:

所以我在 AndroidManifest.xml 文件中添加了一些权限:

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

当然我也确保向用户请求权限(虽然我不确定我是否应该也请求 Manifest.permission.WRITE_EXTERNAL_STORAGE 权限,我也希望能够写,但是授权弹出窗口没有提到 read/write,它只是要求访问存储):

if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), STORAGE_PERMISSION_CODE)
}

但后来我试图获取根文件夹的内容,屏幕截图上的那个,我尝试以这种方式打开几个:

Environment.getDataDirectory().listFiles() // Is null
Environment.getRootDirectory().listFiles() // Isn't the correct folder
Environment.getExternalStorageDirectory().listFiles() // Null
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).listFiles() // Null

我已经尝试了在这个要点上找到的几乎所有有趣的路径 (https://gist.github.com/lopspower/76421751b21594c69eb2),但是其中 none 给了我想要的...

尝试以下操作:

 String path = Environment.getExternalStorageDirectory().getAbsolutePath();
            File[] files = new File(path).listFiles();
            if (files != null && files.length > 0) {
                for (File file : files) {
                    Log.d("FILE", "--> "+file.getName());
                }
            }

确保已授予存储权限,并将此行添加到您的清单中:android:requestLegacyExternalStorage="true" 在 App 标签内。

Logcat :

2021-02-27 23:55:35.470 3285-3285/maa.abc D/FILE: --> Android
2021-02-27 23:55:35.470 3285-3285/maa.abc D/FILE: --> MIUI
2021-02-27 23:55:35.470 3285-3285/maa.abc D/FILE: --> dctp
2021-02-27 23:55:35.470 3285-3285/maa.abc D/FILE: --> did
2021-02-27 23:55:35.470 3285-3285/maa.abc D/FILE: --> Movies
2021-02-27 23:55:35.470 3285-3285/maa.abc D/FILE: --> DCIM
2021-02-27 23:55:35.470 3285-3285/maa.abc D/FILE: --> Pictures
2021-02-27 23:55:35.470 3285-3285/maa.abc D/FILE: --> Download
2021-02-27 23:55:35.470 3285-3285/maa.abc D/FILE: --> WhatsApp
2021-02-27 23:55:35.470 3285-3285/maa.abc D/FILE: --> ClassicGames
2021-02-27 23:55:35.470 3285-3285/maa.abc D/FILE: --> .wallpaperboard
2021-02-27 23:55:35.470 3285-3285/maa.abc D/FILE: --> com.facebook.katana
2021-02-27 23:55:35.470 3285-3285/maa.abc D/FILE: --> FileExplorer
2021-02-27 23:55:35.470 3285-3285/maa.abc D/FILE: --> logger
2021-02-27 23:55:35.470 3285-3285/maa.abc D/FILE: --> .turing.dat
2021-02-27 23:55:35.470 3285-3285/maa.abc D/FILE: --> MicTest
2021-02-27 23:55:35.470 3285-3285/maa.abc D/FILE: --> Telegram
2021-02-27 23:55:35.470 3285-3285/maa.abc D/FILE: --> IMG_20210206_210449.jpg
2021-02-27 23:55:35.470 3285-3285/maa.abc D/FILE: --> voip-data
2021-02-27 23:55:35.470 3285-3285/maa.abc D/FILE: --> Music
2021-02-27 23:55:35.470 3285-3285/maa.abc D/FILE: --> CamScanner
2021-02-27 23:55:35.470 3285-3285/maa.abc D/FILE: --> .BackgroundChange