Android File.listFiles () возвращает ноль - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь получить доступ к своим файлам Android через мой apk и (первоначально) перечислить их на моем терминале.Вот код, который я использую:

File basePath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)getAbsolutePath();
File directory = new File(basePath);
System.out.println("" + directory.toString());
File[] directoryContents = directory.listFiles();

Мне удалось распечатать этот путь: /storage/emulated/0/Download, который на самом деле существует в моем андроиде и содержит несколько файлов.

При перечислении файлов внутри этогоиспользуя каталог:

for (File file : directoryContents)
    {
        if (file.isFile())
            System.out.println("" + file.getName());
        else
            continue;
    }

Я получаю java.lang.NullPointerException: Attempt to get length of null array

Я также включил <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> в манифест Android.

Мой смартфон работает на Android 7.0, если это поможет.

1 Ответ

0 голосов
/ 13 февраля 2019

listFiles возвращает массив, если экземпляр File, из которого вызывается этот метод, является каталогом.Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DOWNLOADS) всегда (я предполагаю) возвращает каталог (если вы не изменили значения по умолчанию os).так что единственное, что может пойти не так - это, вероятно, отсутствие разрешений;

, вот как правильно запрашивать разрешения

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