android - 无法访问 Android Q 中的存储

标签 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);
            }
        }

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

最佳答案

This is a temporary solution. From Android 11 Scoped Storage have to be used.

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

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

关于android - 无法访问 Android Q 中的存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58213996/

相关文章:

android - 使 gps 消耗最少的电池

android - 如何一次性授予android所有权限?

android - 从 Url 下载 pdf 并将其保存到 SD 卡

android - 从存储中选择文件后获取文件路径

android - PDF.js 无法在 Android 11 上显示来自 externalFilesDir 的 PDF

android - 通过代码查看android中是否勾选了 "Unknown Sources"?

java - 如何使用 PendingIntent 将发送的短信数据传递给 BroadcastReceiver?

Delphi v10.2.2 升级到 v10.2.3 后 Android 库 "Revert System Files to Default"破坏编译

Android M - 有什么方法可以知道用户是否选择永远不再看到授予权限对话框?

安卓权限: Read device state and identity is shown