首页 > 解决方案 > 无法访问 Android Q 中的存储空间

问题描述

尽管具有读写权限,但我无法在 Android 10 中访问 sdcard。这是我列出所有目录的方法。

        File root = new File("/mnt/sdcard/");

        File[] subFiles = root.listFiles();

        for(File file : subFiles)    {
            if(file.isDirectory())  {
                String str = text.getText().toString() + "\n";
                str+=file.getAbsolutePath();
                text.setText(str);
            }
        }

如果我使用/mnt/而不是,/mnt/sdcard/我可以看到sdcard目录在其中列出,但是当我使用时/mnt/sdcard/subFilesnull. 我不知道这是否与新的 android 10 版本有关,或者是模拟器的问题。我正在使用 android studio 的默认模拟器进行调试。

标签: androidandroid-permissionsandroid-storage

解决方案


这是一个临时解决方案。从 Android 11 起,必须使用范围存储。

该问题requestLegacyExternalStoragetrue在清单文件中设置。由于默认情况下对外部存储的范围访问,它false在 Android 10 或更高版本中设置为。添加这一行AndroidManifest.xml解决了我的问题。

<manifest ... >
  <!-- This attribute is "false" by default on apps targeting
       Android 10 or higher. -->
  <application 
       android:requestLegacyExternalStorage="true" ........ >
    ......
  </application>
</manifest>

推荐阅读