Невозможно получить доступ к хранилищу в Android Q - PullRequest
0 голосов
/ 03 октября 2019

Несмотря на то, что у меня есть права на чтение и запись, я не могу получить доступ к sdcard в Android 10. Это был мой подход к выводу списка всех каталогов.

        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/, subFiles равен null. Я не знаю, если это что-то касается новой версии Android 10 или это проблема с эмулятором. Я использовал эмулятор по умолчанию для Android Studio для отладки.

1 Ответ

2 голосов
/ 03 октября 2019

Проблема была requestLegacyExternalStorage не был установлен в true в файле манифеста. Из-за ограниченного доступа к внешнему хранилищу по умолчанию он установлен на 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>
...