Android MediaStore.Files.getContentUri как получить внутреннюю папку для приложения

#android #mediastore

#Android #mediastore

Вопрос:

В моем приложении я пытаюсь создать галерею изображений для отображения изображений, сделанных с помощью приложения из папки, созданной в приложении.

 public Loader<Cursor> onCreateLoader(int id, @Nullable Bundle args) {
//        File imageDestPath = new File(getApplicationContext().getFilesDir(), "cropped");
        String[] projection = {
                MediaStore.Files.FileColumns._ID,
                MediaStore.Files.FileColumns.DATE_ADDED,
                MediaStore.Files.FileColumns.DATA,
                MediaStore.Files.FileColumns.MEDIA_TYPE
        };
        String selection = MediaStore.Files.FileColumns.MEDIA_TYPE   "="
                  MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE
                  " OR "
                  MediaStore.Files.FileColumns.MEDIA_TYPE   " = "
                  MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO;

        return new CursorLoader( this,
                MediaStore.Files.getContentUri( "external" ),
                projection,
                selection,
                null,
                MediaStore.Files.FileColumns.DATE_ADDED   " DESC"
                );
    }
  

Я использую приведенный выше код для получения файлов из папки. Однако приведенный выше код использует:

 MediaStore.Files.getContentUri( "external" ),
  

внешний каталог. При этом отображаются изображения в моей папке DCIM / Camera телефона. Когда я попытался изменить это на внутреннюю папку, я не получаю никаких изображений. Я попробовал следующее:

 File imageDestPath = new File(getApplicationContext().getFilesDir(), "cropped");
  

и использовал imageDestPath в

 MediaStore.Files.getContentUri( imageDestPath ),  //not working
MediaStore.Files.getContentUri( "internal" ),  //not displaying any images - no error
MediaStore.Files.getContentUri( getFilesDir.getName() ),  //not displaying any images - no error
MediaStore.Files.getContentUri( getFilesDir() "cropped" ),  //not displaying any images - no error
  

Я думаю, что я не понял MediaStore.Files.getContentUri часть правильно. Когда я прикрепляю imageDestPath к тосту, он правильно отображает папку.

Ответ №1:

Когда я попытался изменить это на внутреннюю папку, я не получаю никаких изображений

MediaStore не имеет доступа к этим изображениям и getContentUri() не поддерживает внутреннее хранилище.