我想使用mediastore.mediacolumns.data将galley中的所有图片加载到我的应用程序中,但不推荐使用。那么,加载它们的另一种方式是什么呢?
我现在使用此代码,但正如我所说的,它已被弃用:
fun getAllShownImagesPath(activity: Activity): MutableList<String> {
val uri: Uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI
val cursor: Cursor?
val columnIndexData: Int
val listOfAllImages: MutableList<String> = mutableListOf()
val projection = arrayOf(MediaStore.MediaColumns.DATA)
var absolutePathOfImage: String
cursor = activity.contentResolver.query(uri, projection, null, null, null)
if (cursor != null) {
columnIndexData = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA)
while (cursor.moveToNext()) {
absolutePathOfImage = cursor.getString(columnIndexData)
listOfAllImages.add(absolutePathOfImage)
}
cursor.close()
}
return listOfAllImages
}
5条答案
按热度按时间kzmpq1sx1#
我能够用自己的文件id替换mediastore.mediacolumns.data(难以置信,文件有id),并正确构建其uri,如下所示:
然后使用uri在视图中构建它!
isr3a4wc2#
我设法想出了下面的解决方案,这是对前面答案的一种补充
但在那里,我仍然无法加载带有获取的uri的图像。文档建议我使用openfiledescriptor(),然后从中解码图像的位图:
p、 我的方法将返回我稍后在应用程序中使用的adapterimage对象列表,但此时您可以将任何需要的内容放在那个里
s5a0g9ez3#
通过创建这个类,我最终解决了这个问题
}
media.data不推荐使用“mediastore.images.media.\u id”来获取正确的列,无法正常工作,因此我创建了所需的列
然后我使用getcolumnindexorthrow()方法来获得正确的索引
olmpazwi4#
在 java
8gsdolmq5#
正在从内部存储加载图像。正在使用mediastore类读取包含图像和视频的所有文件夹。
并将结果作为arraylist返回。
//此功能负责读取所有文件夹中的所有视频。