Android ListFiles возвращает ноль

Я использую UnoPlatform для создания приложения для Android и ищу чтение каталогов и файлов на внешний USB-накопитель. Это код, который я использую, но после многих попыток по этой ссылке

Файл существует и находится в каталоге IS, но listFiles() возвращает null

Я не могу получить каталоги или файлы, потому что метод ListFiles всегда возвращает значение null

        var extDirs = Context.GetExternalFilesDirs("");
        if (extDirs != null && extDirs.Count() > 0)
        {
            foreach (var extDir in extDirs)
            {
                var directories = extDir.ListFiles();
                ...

Read_External_Storage и Write_External_Storage проверяются и

       extDir.CanRead() = True
       extDir.IsDirectory = True
       extDir.AbsolutePath = "/storage/5CD7-B286/Android/data/UnoPlatform.UnoPlatform/files"

Это мой AndroidManifest

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application android:requestLegacyExternalStorage="true" 

Может ли кто-нибудь мне помочь?


person Emanuele Leoni    schedule 12.04.2021    source источник
comment
Я тестирую приложение на Samsung Galaxy A7 с Android 10.0.   -  person Emanuele Leoni    schedule 12.04.2021
comment
Как вы получили этот путь? GetExternalFilesDirs() ? Часто USB-накопитель OTG недоступен с использованием классического пути к файловой системе, а только с использованием SAF. Если UnoPlatform.UnoPlatform действительно является вашим конкретным путем к приложению, вам вообще не нужны разрешения.   -  person blackapps    schedule 12.04.2021
comment
@blackapps да UnoPlatform.UnoPlatform — это название моего приложения. Я получаю путь Android.App.Application.Context.GetExternalFilesDirs()   -  person Emanuele Leoni    schedule 12.04.2021
comment
Если нет файлов для перечисления, вы должны получить пустой массив, а не нуль. Но кто знает... В нем есть файлы?   -  person blackapps    schedule 12.04.2021
comment
да, полно каталогов и файлов   -  person Emanuele Leoni    schedule 12.04.2021
comment
Это действительно должно работать. Не могли бы вы добавить скриншот содержимого папки UnoPlatform.UnoPlatform в проводнике на Android? А как насчет других путей, которые вы получаете от GetExternalFilesDirs, содержит ли какой-либо из них ваши файлы?   -  person Martin Zikmund    schedule 13.04.2021
comment
@MartinZikmund по этой ссылке вы можете найти скриншот we.tl/t-DEs038CgT7 Я хотел бы показать папку в корне /storage/5CD7-B286 Возможно ли это?   -  person Emanuele Leoni    schedule 13.04.2021
comment
На скриншоте я вижу другой ID (4EDA-FC5E). Возможно ли, что у вас подключены и SD-карта, и внешний USB-накопитель?   -  person Martin Zikmund    schedule 13.04.2021
comment
@MartinZikmund извини меня. На скриншоте я вставил еще одну флешку с большим количеством папок. Чтобы решить мою проблему, я перемещаюсь по папке .Parent до папки /storage.   -  person Emanuele Leoni    schedule 13.04.2021
comment
Можете ли вы опубликовать свое решение здесь в качестве ответа :-)? Так что вопрос можно закрыть   -  person Martin Zikmund    schedule 13.04.2021


Ответы (1)


Ошибка была моей, потому что Android создает новый путь к папкам на внешнем USB-накопителе следующим образом:

/Android/данные/UnoPlatform.UnoPlatform/файлы

и когда я запрашиваю GetExternalFilesDirs(), он возвращает null, потому что папка с файлами пуста.

Поэтому я перемещался по папкам родителей, пока не нашел папку хранения в качестве родителя, а затем показал ее.

Я думаю, что это не лучшая практика, но на данный момент это лучшее решение для моего бизнеса.

person Emanuele Leoni    schedule 28.04.2021