.listFiles () - не работает на android R (Android 11), дает нулевой результат

Я просто хочу получить все изображения из определенного пути и показать их в Grid RecyclerView Layout, и я тоже это сделал. Вот мой код: -

    File[] allFiles;
PhotoModel photomodel;
ArrayList<PhotoModel> photoModelArrayList;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

public static final File PICTURE_DIRECTORY =
            new File(Environment.getExternalStorageDirectory() + File.separator + "Image/AppName/Photoes");


allFiles = PICTURE_DIRECTORY.listFiles();

    try {
            assert allFiles != null;
            Arrays.sort(allFiles, (o1, o2) -> Long.compare(o2.lastModified(), o1.lastModified()));

            for (int i = 0; i < allFiles.length; i++) {
                File file = allFiles[i];
                if (Uri.fromFile(file).toString().endsWith(".png") || Uri.fromFile(file).toString().endsWith(".jpg")) {
                    photomodel = new PhotoModel("WhatsStatus: " + (i + 1),
                            Uri.fromFile(file),
                            allFiles[i].getAbsolutePath(),
                            file.getName());
                    photoModelArrayList.add(photomodel);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }


}

Я также добавил все разрешения и унаследованные разрешения в manifest.xml. Надеюсь, этот код хорошо работает на android 16 - android 30.

Но на android R или android 31 этот код не работает, потому что allFiles = PICTURE_DIRECTORY.listFiles () дает нулевое значение. Итак, что мне теперь делать? Я стараюсь изо всех сил, пожалуйста, помогите мне.

if ( !PICTURE_DIRECTORY.exists() ) return; отсутствует в вашем коде. Кто создал ту директорию Image в корне внешнего хранилища? Тебе следовало начать с этого.
blackapps 09.04.2021 16:13
if ( allFiles==null) return;
blackapps 09.04.2021 16:17
if (Uri.fromFile(file).toString().endsWith(".png") || Uri.fromFile(file).toString().endsWith(".jpg")) { Не нужно было так усложнять преобразование в uri. Меняем на if (file.getName().endsWith(".png") || file.getName().endsWith(".jpg")) {`
blackapps 09.04.2021 16:24
allFiles[i].getAbsolutePath(), Изменить на file.getAbsolutePath(), `
blackapps 09.04.2021 16:27
1
4
36
0

Другие вопросы по теме