Файл.listFiles возвращает null, когда он не должен



Я пытаюсь получить список файлов, существующих в папке Phone Pictures (внутренняя память, не вставлена SD-карта), используя это:



 File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File[] files = file.listFiles();


Но значение файла всегда равно null.
Я также добавляю это к AndroidManifest.xml



 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />


Любые идеи будут высоко оценены, заранее спасибо.

761   3  

3 ответов:

Если вы нацелены на Android SDK >=23, вам нужно получить разрешение во время выполнения.

Https://developer.android.com/training/permissions/requesting.html

Он возвращает null, так как Environment.getExternalStoragePublicDirectory будет / должен обрабатывать файлы из внешнего хранилища, например SD card..as вы утверждаете, что sd-карта не вставлена

Как предположил Абхишек Ариан, я использую Android SDK >=23, поэтому мне пришлось получить разрешения с помощью кода:

  boolean grantedAll = ContextCompat.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
if (!grantedAll)
   {
     ActivityCompat.requestPermissions(thisActivity,
            new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
            REQUEST_PERMISSIONS);
   }

Comments

    Ничего не найдено.