无法访问 Android Q 中的存储

Ali*_*ain 3 android android-permissions android-storage

尽管具有读写权限,但我无法在 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);
            }
        }
Run Code Online (Sandbox Code Playgroud)

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

Ali*_*ain 8

这是一个临时解决方案。必须使用 Android 11 Scoped Storage。

问题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>
Run Code Online (Sandbox Code Playgroud)

  • 不要将此视为长期解决方案。该功能预计将在下一个 Android 版本中删除 (2认同)