Android: изображения и видео в одном и том же курсоре без курсора - PullRequest
1 голос
/ 10 октября 2019

Я хочу показывать видео и изображения из памяти, используя распознаватель контента, но я не хочу использовать для него cursorLoader.

Я использую приведенный ниже код для получения URI файла, но он возвращает только изображения, но янужны изображения, а также видео URI.

private fun getAllShownPath(activity:Activity):ArrayList<String> {
        val uri:Uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI
        var cursor:Cursor?= null
        val columnIndexData:Int
        val columnIndexFolderName:Int
        val listOfAllImages = ArrayList<String>()
        var absolutePathOfImage:String? = null
        val projection = arrayOf<String>(MediaStore.MediaColumns.DATA, MediaStore.Images.Media.BUCKET_DISPLAY_NAME, MediaStore.Video.Media.BUCKET_DISPLAY_NAME)
        cursor = activity.contentResolver.query(uri, projection, null, null, null)
        columnIndexData = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA)
        columnIndexFolderName = cursor
                .getColumnIndexOrThrow(MediaStore.Images.Media.BUCKET_DISPLAY_NAME)
        while (cursor.moveToNext())
        {
            absolutePathOfImage = cursor.getString(columnIndexData)
            listOfAllImages.add(absolutePathOfImage)
        }
        return listOfAllImages

    }

Что я здесь не так делаю?

enter image description here

1 Ответ

0 голосов
/ 10 октября 2019
    String[] projection = {
        MediaStore.Files.FileColumns._ID, 
        MediaStore.Files.FileColumns.DATA,
        MediaStore.Files.FileColumns.DATE_ADDED,
        MediaStore.Files.FileColumns.MEDIA_TYPE,
        MediaStore.Files.FileColumns.MIME_TYPE,
        MediaStore.Files.FileColumns.TITLE
    };

// This will Return only video and image metadata.

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;

Uri queryUri = MediaStore.Files.getContentUri("external");

CursorLoader cursorLoader = new CursorLoader(
    this,
    queryUri,
    projection,
    selection,
    null, // Selection args (none).
    MediaStore.Files.FileColumns.DATE_ADDED + " DESC" // Sort order.
  );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...