首页 > 解决方案 > 在 Android 中列出图像或特定文件的最佳方式

问题描述

当前在 Android 设备上构建图像列表的最佳方法是什么?有这么多不同的 API 和这么多不同的方法,我很困惑。

我已经阅读了有关将它们加载到光标对象 Media Store 中的信息,其中一些只是简单地遍历文件夹(使用文件类型过滤器),但似乎没有什么对我有用。

我基本上想在设备上创建所有图像(或 pdf 文件)的列表。

一种一致性是获得内部存储器的读取权限。

我想我要问的是,是否有任何体面的(当前)教程来遍历设备上的所有文件夹并将它们添加到列表/数组中。我不介意做研究/工作,但我发现的唯一东西是关于 SO(而且大部分都是 6 岁以上)。

标签: androidimage

解决方案


您应该查找的文档在这里:

https://developer.android.com/training/data-storage/shared/media

        private val projection = arrayOf(
            MediaStore.Images.Media._ID,
            MediaStore.Images.Media.DISPLAY_NAME)

        private val sortOrder = "${MediaStore.Images.Media.DATE_ADDED} DESC"
        
        applicationContext.contentResolver.query(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
            projection,
            null,
            null,
            sortOrder
        )?.use { cursor ->

          val idColumn = cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID)
            while (cursor.moveToNext()) {
                // Use an ID column from the projection to get
                // a URI representing the media item itself.

 val contentUri: Uri = ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, id)

            }
        }

这个答案在 SO 中的第 3 篇文章对带有 Kotlin Coroutines 的 Gallery 中的图像有更具体的实现

https://stackoverflow.com/a/36815451/11982611


推荐阅读