Не могу получить доступ к файлам на sd карте

Пытаюсь получить список всех файлов .txt на sd карте (есть 1 созданный через device file explorer файл), но программа не видит этот файл. Создать файл на sd карте программно не получается.

Пробовала метод getExternalStorageDirectory, программа проходится по всем папкам, в папках Android/data и Android/obb происходит ошибка java.lang.NullPointerException: Attempt to get length of null array ( как я понимаю, список файлов в этих папках при вызове метода listFiles пустой, то есть нет никаких папок внутри).Пыталась создать файл .txt по пути, выданном этим методом, не получалось.

Пробовала метод getExternalFilesDir(null), выдает путь /storage/emulated/0/Android/data/com.example.speedreading/files, по этому пути мне удалось создать файл .txt и программа его видит. Но почему при вызове прошлого метода в папке data не было замечено никаких папок, если сейчас тут есть папка com.example.speedreading ?

Пробовала метод getExternalFilesDirs(null), но та же история.

Разрешения write(read)_external_storage в манифесте прописывала, использовала в программе код для динамического запроса разрешений (проверка наличия, если нет разрешений - вызывается диалоговое окно с просьбой дать разрешение).

Запускала приложение на телефоне, а не на эмуляторе. В нем на sd в разных папках раскидала .txt файлы, все равно не видит файлы.

Получается, что записать и найти файлы могу только по пути /storage/emulated/0/Android/data/com.example.speedreading/files. Но мне нужно находить файлы на всей sd карте, а не только в этой папке

P.S через file explorer не могу посмотреть содержимое папки Android/data, пишет Permission denied

public void initList(String path) {
        try {
            String filename;
            File file = new File(path);
            File[] filelist = file.listFiles();

            for (File f : filelist) {
                if (f.isDirectory()) {
                    initList(f.getAbsolutePath() + "/");
                } else {
                    filename = f.getName();
                    if (filename.endsWith(".txt")) {
                        list.add(new TxtFile(filename, f.getAbsolutePath()));
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    } ```

Ответы (0 шт):