android - 在 Android 中列出图像或特定文件的最佳方式
问题描述
当前在 Android 设备上构建图像列表的最佳方法是什么?有这么多不同的 API 和这么多不同的方法,我很困惑。
我已经阅读了有关将它们加载到光标对象 Media Store 中的信息,其中一些只是简单地遍历文件夹(使用文件类型过滤器),但似乎没有什么对我有用。
我基本上想在设备上创建所有图像(或 pdf 文件)的列表。
一种一致性是获得内部存储器的读取权限。
我想我要问的是,是否有任何体面的(当前)教程来遍历设备上的所有文件夹并将它们添加到列表/数组中。我不介意做研究/工作,但我发现的唯一东西是关于 SO(而且大部分都是 6 岁以上)。
解决方案
您应该查找的文档在这里:
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 中的图像有更具体的实现
推荐阅读
- r - 你如何绘制分布在多列上的分布图?
- azure - 使用 ADF 管理 Azure BlobStorage 文件追加
- python - 如何使用 Django 将每个图像嵌入到 HTML 页面的目录中?
- python - 将时间更改为标准日期时间格式
- ruby-on-rails - 在 XHR 响应中发送 cookie 但它没有被存储?
- c# - 在我的应用程序上获取 Windows gmail 通知
- c# - 使用 ASP.NET MVC5 将数据库中的数据导入我的视图中的下拉列表
- python - 在 Pandas GroupBy 中查找组中的重复值
- php - 每次打印一个新的 & 其中包含“N”个元素,总数为“Q”
- button - 选择时如何在 UWP 中的按钮上显示边框