Невозможно получить доступ к съемной SD-карте из моего приложения android (Android Studio) - PullRequest
0 голосов
/ 09 июля 2020

Я разрабатываю приложение, в котором мне нужно искать файлы PDF во внутреннем хранилище, а также на съемной SD-карте. Это код, который я использую:

private void Search_Dir(File dir) {

        try {
            String pdfPattern = displayName;  //(displayName = pdf_name.pdf)
            File FileList[] = dir.listFiles();

            if(FileList != null)
            {
                for(int i = 0 ; i < FileList.length ; i++)
                {

                    if(FileList[i].isDirectory())
                    {
                        Search_Dir(FileList[i]);
                    }
                    else
                    {
                        if(FileList[i].getName().endsWith(pdfPattern))
                        {
                            path = FileList[i].toString();
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Здесь путь - это строка, которая будет содержать путь к PDF-файлу, который я хочу найти. И имя PDF-файла, который я ищу: displayName

Я вызываю этот метод так:

Search_Dir(Environment.getExternalStorageDirectory());

Но, к сожалению, этот метод ищет PDF-файл только во внутренней памяти. Я определил READ_EXTERNAL_STORAGE и WRITE_EXTERNAL_STORAGE , и я также запрашиваю время выполнения этих разрешений.

Я не знаю, имеет ли это значение, но раньше он работал отлично. Я также получал путь к файлам PDF, расположенным на SD-карте. Но я сбросил заводские настройки на своем телефоне, а затем снова установил свое приложение. С тех пор он не работает.

Он работает с файлами, расположенными в моем внутреннем хранилище, например / storage / emulated / 0 / ....., но не на съемной SD-карте.

Мой вопрос: Что я делаю не так. Или есть какой-либо другой метод, который я должен использовать для поиска файлов, которые будут работать как на внутренней памяти, так и на съемной SD-карте.

Спасибо.

1 Ответ

1 голос
/ 15 августа 2020

Environment.getExternalStorageDirectory () дает вам путь к основному хранилищу устройства, которое вы также можете назвать внутренним хранилищем.

Вам нужно будет получить root путь съемного хранилища (если доступно), чтобы искать там файлы. Если вам не нужна сильная головная боль, вы можете просто создать средство выбора хранилища или реализовать любое из уже имеющихся и протестированных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...